目录
实现整个流程如下图,但是我们的工作量并不是很多,我们可以在官网找到示例代码
一、前期准备
这里我们使用到3个代码
API_KEY.py 填写我们的API
xzarm_asr.py 语音识别
xzarm_tts.py 语音合成
# API_KEY.py
# 小智-学长 2024-10-19
# 百度智能云千帆AppBuilder-SDK
#https://console.bce.baidu.com/ai_apaas/secretKey
APPBUILDER_TOKEN = "bce-v3/ALTAK-zQsH6******"#语音合成
# 百度智能云千帆ModelBuilder
# https://console.bce.baidu.com/ai/#/ai/speech/overview/index
APPBUILDER_token = "25.548acf45ed740******"#语音识别
后期我们可能用到这两个网站,我们先暂时放置在这里,分别使用到百度智能云千帆AppBuilder-SDK、ModelBuilder,对应着语音合成和语音识别。
百度智能云千帆AppBuilder-SDKhttps://console.bce.baidu.com/ai_apaas/secretKey
语音合成:百度智能云千帆AppBuilder-SDK
百度智能云千帆ModelBuilderhttps://console.bce.baidu.com/ai/#/ai/speech/overview/index
语音识别:百度智能云千帆ModelBuilder
我们先安装用到的库
pip install --upgrade appbuilder-sdk
下载速度慢可能是由于网络连接不稳定或者与 PyPI 的服务器距离较远。你可以尝试以下几种方法来加快下载速度:
国内的 PyPI 镜像源速度通常更快,可以通过指定源来加速下载。例如,使用阿里云镜像
pip install --upgrade nodezator -i https://mirrors.aliyun.com/pypi/simple/
其他常见的国内镜像源:
- 清华大学:
https://pypi.tuna.tsinghua.edu.cn/simple/
- 豆瓣:
https://pypi.doubanio.com/simple/
将以上 URL 替换到 -i
后即可。
二、语音合成
打开我们的网址百度智能云千帆AppBuilder,点击“密钥管理”,没有密钥的话就新建一个
记录这个值,填写到API_KEY.py 的APPBUILDER_TOKEN
需要填写:xzarm_tts_tts(TEXT=' ', tts_wav_path = ' ')
运行代码将保存语音文件wav到指定的文件夹下
# xzarm_tts.py
# 小智-学长 2024-5-23
# 语音合成
print('导入语音合成模块')
import os
import appbuilder
from API_KEY import *
os.environ["APPBUILDER_TOKEN"] = APPBUILDER_TOKEN
tts_ab = appbuilder.TTS()
def xzarm_tts_tts(TEXT='我是小智大模型AI机械臂,您可以说出你的要求,我会一一完成要求', tts_wav_path = 'temp/xzarm_tts_tts.wav'):
'''语音合成TTS,生成wav音频文件'''
inp = appbuilder.Message(content={"text": TEXT})
out = tts_ab.run(inp, model="paddlespeech-tts", audio_type="wav")
with open(tts_wav_path, "wb") as f:
f.write(out.content["audio_binary"])
print("TTS语音合成,导出wav音频文件至:{}".format(tts_wav_path))
xzarm_tts_tts(TEXT='我是大模型AI机械臂,您可以说出你的要求,我会一一完成要求哦', tts_wav_path = 'temp/xzarm_tts_tts.wav')
三、语音识别
打开我们的网址语音技术 - 百度智能云控制台,点击“应用列表” “创建应用”
我们点击“API在线调试”,找到refresh_token的值,填到API_KEY.py 的APPBUILDER_token
记录这个值,填写到API_KEY.py 的APPBUILDER_token
运行代码将显示出识别的结果,如果不是,请查看错误码对应的问题。
# xzarm_asr.py
# 小智-学长 2024-10-19
# 录音+语音识别
print('导入录音+语音识别模块')
import os,json,base64,requests
from API_KEY import *
def xzarm_asr_recognition(audio_path='temp/speech_record.wav'):
"""
录音文件的语音识别,返回识别结果
:param audio_path: 需要识别的音频文件路径
:return: 语音识别结果文本
"""
url = "https://vop.baidu.com/server_api"
# 读取音频文件并进行Base64编码
with open(audio_path, "rb") as f:
content = base64.b64encode(f.read()).decode("utf8")
size = os.path.getsize(audio_path)
# 准备请求数据
payload = json.dumps({
"format": "pcm",
"rate": 16000,
"channel": 1,
"cuid": "Hy5qg1neIBkl8ltIHWefF6uwTtNBmF49",
"token": APPBUILDER_token,
"speech": content,
"len": size
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
# 发起POST请求
response = requests.post(url, headers=headers, data=payload)
response_data = response.json()
# 解析并返回识别结果
if 'result' in response_data:
text = response_data['result'][0]
print('语音识别结果::', text)
return text
else:
print("识别失败:", response_data)
return None
xzarm_asr_recognition(audio_path='temp/xzarm_tts_tts.wav')
结果: