Python 3运行sample_wave.py报错:无法创建语音处理器
解决SoundHound Voice端点返回"音频不支持"错误的方案
这个错误核心是SoundHound服务无法识别你发送的WAV文件格式,我来给你梳理几个必查的调整点,按顺序排查应该能解决:
1. 确认WAV文件的音频参数是否符合要求
SoundHound的Voice接口对音频格式有严格要求,通常需要满足:
- 采样率:16kHz(最常用,部分接口支持8kHz,但优先用16kHz)
- 位深:16位(PCM编码,不能是压缩格式)
- 声道:单声道(Mono)
- 编码格式:无压缩的PCM(也就是WAV的标准未压缩格式,不能是MP3转的WAV或者其他压缩变体)
你可以用ffmpeg命令快速查看音频参数:
ffmpeg -i your_audio.wav
如果参数不符合,用ffmpeg转码:
ffmpeg -i your_audio.wav -ar 16000 -ac 1 -sample_fmt s16le corrected_audio.wav
2. 检查请求头的Content-Type是否正确
发送请求时,必须在HTTP头里指定正确的音频类型,对于未压缩的WAV,应该设置:
headers = { 'Content-Type': 'audio/wav', # 别忘了加上你的API密钥等必填头信息 'SoundHound-Client-ID': 'YOUR_CLIENT_ID' }
如果Content-Type填错(比如填成audio/mpeg或者没设置),服务端会无法正确解析音频。
3. 验证音频数据的发送方式是否正确
在Python里发送WAV文件时,要确保你是读取二进制数据发送,而不是文本模式。比如:
import requests url = "YOUR_SOUNDHOUND_VOICE_ENDPOINT" headers = {'Content-Type': 'audio/wav', 'SoundHound-Client-ID': 'YOUR_ID'} with open('corrected_audio.wav', 'rb') as f: audio_data = f.read() response = requests.post(url, headers=headers, data=audio_data)
如果用'r'模式读取,会把二进制音频当成文本处理,导致数据损坏,服务端自然无法识别。
4. 检查sample_wave.py里的音频处理逻辑
如果是用官方示例代码,确认代码里有没有对音频做额外的压缩或格式转换,比如有些示例可能会默认处理成其他格式,你需要修改参数匹配SoundHound的要求。比如如果代码里有设置采样率的地方,改成16kHz,声道设为单声道。
最后测试
调整完以上几点后,用修正后的WAV文件重新发送请求,应该就能正常创建语音处理器了。
内容的提问来源于stack exchange,提问作者user90346
相关产品推荐
相关产品推荐

