如何在Azure Speech Recognition中传入二进制/十六进制数据替代WAV文件路径
解决方案
核心逻辑是使用Azure语音SDK内置的PushAudioInputStream类直接加载内存中的二进制音频数据,无需写入本地磁盘。
完整修改后代码
import azure.cognitiveservices.speech as speechsdk # 原有获取音频二进制数据的逻辑不变 raw_data = self.audio.get_wav_data() # 配置语音识别参数,这部分和原有逻辑一致 speech_config = speechsdk.SpeechConfig(subscription="<subscription>", region="westeurope") speech_config.speech_recognition_language="pt-BR" # 替换原有基于本地文件的AudioConfig构造逻辑 # 1. 创建推送音频流 push_stream = speechsdk.audio.PushAudioInputStream() # 2. 将内存中的WAV二进制数据写入流 push_stream.write(raw_data) # 3. 写入完成后关闭流,告知识别器没有更多音频数据 push_stream.close() # 4. 基于流构造AudioConfig audio_config = speechsdk.audio.AudioConfig(stream=push_stream) # 后续识别逻辑不变 speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config) result = speech_recognizer.recognize_once_async().get() user_request = result.text
注意事项
- 该方案仅适用于你当前获取到的
raw_data是带标准WAV头的完整二进制数据的场景,如果你拿到的是裸PCM音频数据,需要额外通过AudioStreamFormat指定采样率、位深、声道数参数,再传入PushAudioInputStream构造方法。 - 如果你需要处理大体积音频,可以分段调用
push_stream.write()方法推送音频块,全部推送完成后再调用close()即可。
内容的提问来源于stack exchange,提问作者Julio S.
相关产品推荐
相关产品推荐

