我的本意是想在Xilinx PYNQ上实现语音翻译,做一个类似翻译宝的应用,由于百度智能云目前仅支持安卓和IOS上的语音翻译,所以想要在嵌入式设备上实现该功能,就需要顺序调用短语音识别API和通用翻译API,下面记录使用方法。
1.进入百度智能云网站注册账号并登录:百度智能云-智能时代基础设施 (baidu.com)
登录界面:
2.登录之后在上面一堆选项栏里选择产品 —> 人工智能 —> 短语音识别
如果让注册开发者那就注册一下(需要身份证号认证)再点这个短语音识别选项。
3.点立即使用,如下图
4.点领取免费资源,能领的都领上,如下图
5.领完之后回到页面,点创建应用
按照指引填就行了
6.填完回来再点管理应用,这里就显示了调用API要用到的三个关键字符串:AppID、API Key 和 Secret Key,如图点击左侧的技术文档选项。
7.如图,在这里就能找到API的使用方法
这里贴两个我的代码供参考:
from aip import AipSpeechdef get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()APP_ID = ''
API_KEY = ''
SECRET_KEY = ''client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.asr(get_file_content('mic1.wav'), 'wav', 16000, {'dev_pid': 1737,
})
import audioop
from aip import AipSpeech
from soundfile import SoundFilecap_cnt = 44100 #采样频率file = SoundFile('recong.wav')
temp_data = bytes(cap_cnt * 50)file.buffer_read_into(temp_data, dtype='int16');
data = audioop.ratecv(temp_data, 2, 1, 44100, 16000, None) # 转换采样频率到16000APP_ID = ''
API_KEY = ''
SECRET_KEY = ''client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)result = client.asr(data[0], 'wav', 16000, {'dev_pid': 1737,
})
result里返回一个字典包括很多数据,用 result['result'][0] 返回识别结果。
8.下面是将识别到的结果送到百度翻译
点击网址:百度AI开放平台-全球领先的人工智能服务平台 (baidu.com)
在上面选择开发能力选项,点击通用文本翻译选项,如下图所示
如果需要登录的话,用语音识别的账号就行,点立即使用
创建应用,按照指引填写就行了
点管理应用,点技术文档
9.这里需要说明的是,文本翻译功能使用的是HTTP的方式进行调用,所以要先根据技术文档获取access_token,文档里有教:
import requests # client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:print(response.json())
10.获取到access_token后,就能使用翻译功能了:
import requests url = 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=【刚刚获取的access_token】'
headers = {"Content-Type":"json;charset=utf-8"}
params = {"q":"hello","from":"auto","to":"zh"}r = requests.post(url=url,params=params,headers=headers)
a = r.json()
print(a['result']['trans_result'])
把语音识别的输出送到文本翻译的输入,就可以实现语音翻译了