我的树莓派已经有了语音唤醒功能,也有了语音合成功能,接下来就是要把他们融合起来。操作也很简单。先把《树莓派智能语音助手之TTS - pyttsx3 + espeak》一文中提到的那个test.py改个名字叫tts.py复制到《树莓派自制智能语音助手之语音唤醒》一文所建立的工程目录。
Snowboy语音唤醒后的”叮”的一声是demo.py里的detected_callback调用了snowboydecoder.py中的函数play_audio_file()。因此,要让唤醒后直接说一句自定义的文本,我们可以通过修改play_audio_file函数,或者修改demo.py中的detected_callback回调对象来实现。
方法一:修改snowboydecoder.py
先在文件头部输入import tts ;
然后找到 def play_audio_file(fname=DETECT_DING)函数;
把原函数里的语句全部注释掉;
在其底部增加一句:tts.text_to_speech(‘text’) ,其中text的内容为需要语音合成的文本;
存档退出。
发放二:修改demo.py
先在文件头部输入import tts ;
在main loop前建一个新函数:
def callback():
tts.text_to_speech('text')
将detector.start中的detected_callback= snowboydecoder.play_audio_file,改成detected_callback= callback;
存档退出。
无论选择方法一还是方法二,存档后执行
python3 demo.py resources/models/snowboy.umdl
当侦测到“snowboy”这个唤醒词后,树莓派都会播放之前定义的text内容了。