@yeahugo
2018-04-14T04:05:07.000000Z
字数 3235
阅读 1585
开发文档
本文档介绍在AIY VoiceKit开发环境上如何集成科大讯飞语音识别和语音合成服务。
到讯飞开放平台 http://www.xfyun.cn/ 注册账号。
进入应用控制台,创建新应用,应用平台选择WebAPI。

注册新应用之后自动跳转到应用列表页面,点击添加新服务,选择添加AIUI平台和在线语音合成。

AIUI平台进入服务管理,在IP白名单,填上本机IP地址,或者把IP白名单功能关闭。
同理,在语音合成IP白名单管理,添加本机IP

进入AIUI平台的服务管理,复制出来APPID和ApiKey,同理复制出来语音合成的APIKey,以便使用。

本接口将自然语言识别为文本输出
下面是一个使用python(基于3.5版本),调用讯飞语音识别接口的完整例子,并且最后解析返回的数据,得到识别结果。
# -*- coding:utf-8 -*-import base64import sysimport timeimport jsonimport hashlibfrom urllib import request,parseimport aiy.audiox_appid = "注意!!填入你的应用AppId"asr_api_key = "注意!!填入你的AIUI平台APIkey"RECORD_DURATION_SECONDS = 3## 调用科大讯飞提供的Web APIdef iflytek_asr(file_path):requrl = "https://api.xfyun.cn/v1/aiui/v1/iat"cur_time = int(time.time())x_param = {"auf":"16k","aue":"raw","scene":"main"}x_param = json.dumps(x_param)xparam_base64 = base64.b64encode(x_param.encode(encoding="utf-8")).decode().strip('\n')file_data = open(file_path, 'rb')file_base64 = base64.b64encode(file_data.read())file_data.close()body_data = "data="+file_base64.decode("utf-8")token = asr_api_key + str(cur_time)+ xparam_base64 + body_datam = hashlib.md5()m.update(token.encode(encoding='utf-8'))x_check_sum = m.hexdigest()headers = {"X-Appid": x_appid,"X-CurTime": cur_time,"X-Param":xparam_base64,"X-CheckSum":x_check_sum,"Content-Type":"application/x-www-form-urlencoded"}req = request.Request(requrl, data=body_data.encode('utf-8'), headers=headers, method="POST")with request.urlopen(req) as f:body = f.read().decode('utf-8')return body## 使用AIY SDK提供的方法录音,再利用讯飞得到文字识别结果if __name__ == '__main__':with aiy.audio.get_recorder() as recorder:while True:temp_file, temp_path = tempfile.mkstemp(suffix='.wav')os.close(temp_file)aiy.audio.record_to_wave(temp_path, RECORD_DURATION_SECONDS)status_ui.status('stopping')result = iflytek_asr(temp_path)result_dict = json.loads(result)if result_dict['code'] == '00000':result_txt = result_dict['data']['result']print(result_txt)
语音合成接口将文字信息转化为声音信息。
下面是一个使用python(基于3.5版本),调用讯飞语音合成接口的完整例子,根据文字内容生成对应的wav声音文件。
#!/usr/bin/env python3import timeimport base64import hashlibimport threadingimport requestsfrom pygame import mixerx_appid = "注意!!填入你的应用AppId"tts_api_key = "注意!!填入你的语音合成服务 APIkey"URL = "http://api.xfyun.cn/v1/service/v1/tts"text = "语音合成内容"## 调用讯飞语音识别APIdef iflytek_tts(tts_txt):curTime = str(int(time.time()))param = "{\"aue\":\""+AUE+"\",\"auf\":\"audio/L16;rate=16000\",\"voice_name\":\"xiaoyan\",\"engine_type\":\"intp65\"}"param_encode = param.encode(encoding="utf-8")paramBase64 = base64.b64encode(param_encode).decode().strip('\n')m2 = hashlib.md5()token = tts_api_key + curTime + paramBase64m2.update(token.encode(encoding='utf-8'))checkSum = m2.hexdigest()header ={'X-CurTime':curTime,'X-Param':paramBase64,'X-Appid':x_appid,'X-CheckSum':checkSum,'X-Real-Ip':'127.0.0.1','Content-Type':'application/x-www-form-urlencoded; charset=utf-8',}result = requests.post(URL,headers=getHeader(),data=text)return resultif __name__ == '__main__':result = iflytek_tts(text)sid = result.headers['sid']audio_filepath += sid + ".wav"writeFile(audio_filepath, result.content)mixer.init()mixer.music.load(audio_filepath)mixer.music.play()