package main import ( "context" ) // ASR provider 接口 + 工厂:把浏览器麦克风 PCM 转成实时文本流。 // 事件语义(与前端约定): // // type=partial text=中间结果 // type=final text=最终句 type asrEvent struct { Typ string // partial | final | error Text string Code string Error string } type asrProvider interface { // start 建连并启动任务,返回后即可 sendAudio。 start(ctx context.Context) error // sendAudio 发送一块 PCM16/16k/mono 音频。 sendAudio(b []byte) error // finish 发送结束指令,upstream 关闭时 events 关闭。 finish() error // events 返回识别结果通道。 events() <-chan asrEvent // close 释放资源。 close() }