前面我们用大模型实现了一个聊天机器人,虽然很强大,但只能输入输出文本,而在现实生活中,有的人不会打字,有的时候也不方便打字,有的人有视力障碍,所以我们要给机器人加个耳朵,再安装个嘴巴。
能听的耳朵,就是语音识别技术,能说话的嘴巴,就是语音合成技术。
能听的耳朵
前面我们通过调用openAI的API实现了聊天机器人,openAI同样提供了语音识别API,背后的语音识别模型是Whisper。
https://github.com/openai/whisper
能听话的机器人实现思路也很简单,就是通过Whisper把音频文件或者麦克风的输出转录成文字,再传递给ChatGPT。
我们看到在调用transcribe接口时传了一个Prompt,这是因为Whisper也是一个类似GPT的模型,会用前面转录出来的文本去预测下一帧音频的内容。Prompt会影响后面识别出来的内容的概率,也就是能够起到给专有名词“纠错”的作用。
除了模型名称、音频文件和Prompt之外,transcribe接口还支持这样三个参数。
1. response\_format,也就是返回的文件格式,默认是JSON。实际你还可以选择TEXT这样的纯文本,或者SRT和VTT这样的音频字幕格式。
2. temperature,这个和我们之前在ChatGPT类型模型里的参数含义类似,就是采样下一帧的时候,如何调整概率分布。这里的参数范围是0-1之间。
3. language,就是音频的语言。提前给模型指定音频的语言,有助于提升模型识别的准确率和速度。
除了基本的音频转录功能,Whisper的API还额外提供了一个叫做translation的接口。这个接口可以在转录音频的时候直接把语音翻译成英文,我们不妨来试一下。
不过可惜的是这个接口只能把内容翻译成英文,不能变成其他语言,Prompt也必须是英文。
调用API既花钱又得把音频上传到服务器,Whisper是开源的,所以可以把模型下载到本地部署。
能说话的嘴巴
语音合成其实已经是一个非常成熟的技术了,今天我们先来体验一下微软Azure云的语音合成API。
对于Azure不熟悉的,也可以选择科大讯飞,阿里云,百度,AWS。
注册Azure账号和申请API KEY就此略过,直接上代码。
同样,为了节省资源以及数据安全问题,我们也可以选择本地部署语音合成模型。
我们在这里,就不妨试一下百度开源的PaddleSpeech的语音合成功能,看看效果怎么样。
我们还是要先安装PaddleSpeech相关的Python包。
然后通过PaddleSpeech自带的TTSExecutor,可以将对应的文本内容转换成WAV文件。需要注意,这个过程中,PaddleSpeech 需要下载对应的模型,所以第一次运行的时候也要花费一定的时间。
总结:
今天,我们通过调用API或者本地部署模型的方式为机器人增加了语音合成,语音识别能力。