python3调用识别REST-API报3301错误
ighack 发布于2017-04 浏览:1758 回复:5
0
收藏

我使用的服务是:识别-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 requests
import 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
个赞
共5条回复 最后由用户已被禁言回复于2022-04
#6xie_yongkang回复于2017-05

ighack:

回复xie_yongkang:

没什么我就是想测试一下语音识别的功能。看一下我的写的代码有没有什么问题,我拿科大飞讯合成的语音是没有问题。证明我的代码写的没问题。

回复ighack:您好, 感谢您的使用,两边的接口输入和返回格式有差异, 百度语音合成的rest api返回的是mp3格式。按照您所描述的设想, 经过转码成8/16kHz的PCM后, 调用百度语音识别的rest api, 同样可以正确识别, 谢谢。

0
#5ighack回复于2017-05

xie_yongkang:

您好, 能了解一下把语音合成的结果再作为语音识别的输入的实际场景是什么吗? 另外, 识别返回的是mp3格式需要转换后才能作为语音识别的输入(8/16kHz的pcm), 谢谢

回复xie_yongkang:

没什么我就是想测试一下语音识别的功能。看一下我的写的代码有没有什么问题,我拿科大飞讯合成的语音是没有问题。证明我的代码写的没问题。

0
#4xie_yongkang回复于2017-05

您好, 能了解一下把语音合成的结果再作为语音识别的输入的实际场景是什么吗? 另外, 识别返回的是mp3格式需要转换后才能作为语音识别的输入(8/16kHz的pcm), 谢谢

0
#3ighack回复于2017-04

还有人没人啊

0
#2ighack回复于2017-04

audio = speech

with open('hello-stt.wav','wb') as f:
baudio = audio.encode()
_data = base64.b64decode(baudio)
f.write(_data)
input()

我把上面的数据反向解析一下。重新在生成文件,是没有问题的。不知道为什么百度不识别

0
TOP
切换版块