我使用的服务是:识别-REST_API
调用的接口是:http://vop.baidu.com/server_api
参数设置情况:
stt_para = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':'7C-E9-D3-11-1E-69', 'token':'24.1d33d3ebea11d4********64.282335-1335399','len':speech_len ,'speech':speech}
开发平台和机型:windows,python3.6
复现步骤、现象及其他描述:
import requestsimport base64
import json
#tok = requests.get(tokurl)
tts_url = 'http://tsn.baidu.com/text2audio'
tts_para = {'tex':'你好凯文','lan':'zh','tok':'24.1d33d3ebea*********63664.282335-1335399','ctp':1,'cuid':'0A-00-27-00-00-12'}
tts_data = requests.post(tts_url, data=tts_para)
with open('hello.wav', 'wb') as f:
f.write(tts_data.content)
input()
stt_url = 'http://vop.baidu.com/server_api'
headers = {'content-type': 'application/json;charset=utf-8'}
with open('hello.wav','rb') as f:
bdata = f.read()
_speech = base64.b64encode(bdata)
speech = _speech.decode() #这一步是为了转成字符串,不然会报TypeError: Object of type 'bytes' is not JSON serializable
speech_len = len(bdata)
stt_para = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':'7C-E9-D3-11-1E-69', 'token':'24.1d33d3ebea11d4***********64.282335-1335399','len':speech_len ,'speech':speech}
stt_data = requests.post(stt_url, data=json.dumps(stt_para),headers=headers)
input()
合成语间没问题,但用这个合成的语音去识别老是报3301
{"err_msg":"recognition error.","err_no":3301,"sn":"883003405861493389441"}
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
ighack:
回复xie_yongkang:
没什么我就是想测试一下语音识别的功能。看一下我的写的代码有没有什么问题,我拿科大飞讯合成的语音是没有问题。证明我的代码写的没问题。
回复ighack:您好, 感谢您的使用,两边的接口输入和返回格式有差异, 百度语音合成的rest api返回的是mp3格式。按照您所描述的设想, 经过转码成8/16kHz的PCM后, 调用百度语音识别的rest api, 同样可以正确识别, 谢谢。
xie_yongkang:
您好, 能了解一下把语音合成的结果再作为语音识别的输入的实际场景是什么吗? 另外, 识别返回的是mp3格式需要转换后才能作为语音识别的输入(8/16kHz的pcm), 谢谢
回复xie_yongkang:
没什么我就是想测试一下语音识别的功能。看一下我的写的代码有没有什么问题,我拿科大飞讯合成的语音是没有问题。证明我的代码写的没问题。
您好, 能了解一下把语音合成的结果再作为语音识别的输入的实际场景是什么吗? 另外, 识别返回的是mp3格式需要转换后才能作为语音识别的输入(8/16kHz的pcm), 谢谢
还有人没人啊
audio = speech
with open('hello-stt.wav','wb') as f:baudio = audio.encode()
_data = base64.b64decode(baudio)
f.write(_data)
input()
我把上面的数据反向解析一下。重新在生成文件,是没有问题的。不知道为什么百度不识别