AWS Transcribe WebSocket识别Icecast2音频流无返回或结果错误求助
问题排查解决方案
- 首先校验音频编码与AWS Transcribe流式接口的匹配性:
当前你使用ffmpeg推流采用libvorbis编码的ogg格式,AWS Transcribe实时流转写仅支持ogg封装下的opus编码,不支持vorbis编码,这是导致转写异常的核心原因之一。你可以将ffmpeg推流命令的编码参数改为libopus,修改后参考命令如下:ffmpeg -re -i yt.wav -ar 44100 -ac 1 -c:a libopus -b:a 64k -content_type 'audio/ogg' -vn -f ogg icecast://source:hackme@serverIP:8000/mystream.ogg - 校验转写接口调用参数一致性:
确认调用AWS Transcribe WebSocket接口时,传入的MediaSampleRateHertz参数值和你音频实际采样率(当前为44100)完全一致,MediaEncoding参数设置为ogg-opus,NumberOfChannels参数和你推流的声道数(当前为1)一致,LanguageCode参数和音频内容的语言匹配。 - 校验音频流的发送逻辑:
原示例中麦克风输入是按100-200ms的小分片按实时速率有序发送,你修改为拉取icecast流后需要确认:- 没有将ogg文件的头信息(标识头、评论头)作为音频帧发送给转写接口
- 音频分片大小控制在100ms到1s之间,按实时速率有序发送,不要出现堆积一次性发送大量分片、或者分片乱序、丢帧的情况
- 拉流过程中出现的网络波动导致的断流、空包要做过滤处理,不要发送无效数据
- 校验错误日志捕获逻辑:
在代码中添加WebSocket消息监听,捕获AWS Transcribe返回的错误响应帧,可直接定位是参数错误、音频格式错误还是权限问题导致的无返回结果。 - 快速验证方法:
将从icecast拉取的音频流先存为本地文件,先调用AWS Transcribe批量转写接口测试是否可以正常识别,先排除音频源本身的问题;再将你发送到转写接口的音频帧导出为本地文件,确认文件可正常播放、无损坏。
内容的提问来源于stack exchange,提问作者ShaderOX
相关产品推荐
相关产品推荐

