《自拍教程79》Python 百度ai实现自动化tts语音输入

案例故事:
智能语音识别技术VR(Voice Recognition)越来越流行,比如siri,小米的小爱同学,
讯飞的车载语音,华为的你好yoyo,这类的应用已经非常广泛了,
为了测试智能语音模块,我们需要进行很多唤醒词和语料的输入,
这块如何实现自动化测试呢?
其关键就是如何将文字(语料集)转成语音,实现TTS:( Text To Speech文字转语音),最终实现模拟语音输入!

百度AI TTS云服务介绍:

要实现text to speech,是个很庞大的引擎,需要解决很多常用词,多音词,方言等等问题,
所以百度提供了云计算接口: 进行text输入,云端反馈speech输出。

Baidu aip创建TTS、ASR应用许可并申请免费试用

唤醒和识别

先进行唤醒,再进入识别对话模式,
唤醒的唤醒词是需要进行自学习的,这部分建议用自学习过的录音文件代替。
自学习的具体流程如截图(以荣耀V20手机为例)
进入识别对话模式后,则可以通过百度TTS云服务自动化进行语音输入!


准备阶段
  1. pip install baidu-aip 百度AI SDK
  2. pip install playsound 播放音频文件
  3. 准备1部手机,比如华为荣耀V20手机一部, 并确保完成了自学习流程!

Python面向过程函数形式

确定你需要多少个功能(函数),最好把功能(函数)都尽量封装好,只暴露一些的参数接口即可。

import os
import time
import aip
import playsound

APP_ID = '23535121'
APP_KEY = 'DwtIqobDjYLVlUnbWrswGiC9'
SECRET_KEY = 'nZxsgKcBXSNHopLLM6NaVEBW6OlMcHR1'
WAKEUP = "wakeup.mp3"


def tts(text, sleep_time=3, audio_name="audio.mp3"):
    if os.path.exists(audio_name):
        os.remove(audio_name)  # 初始化环境
    a_obj = aip.AipSpeech(APP_ID, APP_KEY, SECRET_KEY)
    audio_bin = a_obj.synthesis(text, 'zh', 1, {'vol': 4, 'spd': 5, 'pit': 5, 'per': 1})
    if not isinstance(audio_bin, dict):
        with open(audio_name, "wb") as hf:
            hf.write(audio_bin)
        play(audio_name, 1)
    else:
        print("文本:%s TTS失败,云服务返回异常" % text)
    time.sleep(sleep_time)


def play(audio_file, sleep_time=0.8):
    try:
        playsound.playsound(audio_file)
        time.sleep(sleep_time)
    except:
        print("%s音频播放失败" % audio_file)


if __name__ == '__main__':
    # 在线语音交互
    play(WAKEUP)
    tts("北京天气怎么样", 12)
    play(WAKEUP)
    tts("今天是星期几", 5)
    play(WAKEUP)
    tts("查询上证指数", 6)
    play(WAKEUP)
    tts("世界上最长的河", 11)
    play(WAKEUP)
    tts("珠穆朗玛峰有多高", 4)
    play(WAKEUP)
    tts("55X56等于多少", 5)

    # App控制语音
    play(WAKEUP)
    tts("打开浏览器", 5)
    play(WAKEUP)
    tts("拍照", 8)
    play(WAKEUP)
    tts("打开日历", 7)
    play(WAKEUP)
    tts("发朋友圈", 5)
    tts("自拍教程欢迎您!", 5)
    tts("是的", 3)
    play(WAKEUP)
    tts("返回桌面", 5)

    # 多媒体语音控制
    play(WAKEUP)
    tts("静音", 4)
    play(WAKEUP)
    tts("音量调到中等", 4)
    play(WAKEUP)
    tts("播放周杰伦的七里香", 8)
    play(WAKEUP)
    tts("下一曲", 6)
    play(WAKEUP)
    tts("随机播放", 7)
    play(WAKEUP)
    tts("我要听郭德纲的相声", 9)

    # 通讯语音控制
    play(WAKEUP)
    tts("查询老王的电话号码")
    play(WAKEUP)
    tts("打电话给10086", 10)

    os.system("pause")

运行方式与效果
  1. 准备好当前设备的唤醒词文件wakeup.mp3
  2. 确保自学习顺利完成(即后续电脑端播放wakeup.mp3,即可立马唤醒手机)
  3. 尽量找个安静的环境运行以上脚本,
  4. 保存以上代码为“vr_tts.py", cmd运行"python vr_tts.py"
  5. 简短的视频效果请查看原文链接

更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文链接:https://www.zipython.com/#/detail?id=e72446ad65f84d3482821d37e6d37820
也可关注“武散人”微信订阅号,随时接受文章推送。
《自拍教程79》Python 百度ai实现自动化tts语音输入

上一篇:[极客大挑战 2019]PHP BUUCTF靶场


下一篇:.NET开发者必须学习.NET Core