[原创] 【行空板 Python编程学习主控板】评测十、百度AI在线语音识别及合成

天意无罪   2022-12-19 00:07 楼主

        前面的测评,完成了对行空板的软硬件学习和测试验证,后面的测评内容主要就是完成两个应用设计:基于百度AI的智能语音机器人,以及基于人脸识别的智能门锁;

        基于百度AI的智能语音机器人需要用到百度AI 的在线语音识别技术与语音合成技术,所以本篇评测内容主要由以下几部分组成:

        (1)百度大脑账号注册即API申请;

        (2)百度大脑Python库安装;

        (3)百度在线语音识别测试;

        (4)百度在线语音合成测试。

        (一)百度大脑账号注册即API申请

        我们在百度“站长与开发者服务”产品列表中找到“百度大脑”并进入。

image-20221218235642-1.png

图1

        进入“百度大脑”首页后,我们依次选择“开放能力”、“语音技术”、“语音识别”,进入语音识别页面。

image-20221218235642-2.png

 图2

        进入语音识别页面后,点击“立即使用”,进入百度智能云管理页面。

        说明:如果没有百度账号需要提前注册;

image-20221218235642-3.png

图3

        进入百度智能云页面后,依次选择“概览”、免费尝鲜的“去领取”。首次使用百度AI的用户,都有一个免费试用额度,我们在测评阶段可以使用该免费额度进行测试。我们需要领取两项免费额度功能:语音识别和语音合成;

image-20221218235642-4.png

 图4

        接下来是创建应用API,获得API的AppID、API Key,以及Secret Key。

image-20221218235642-5.png

 图5

        经过以上操作,我们便完成了百度大脑语音识别技术的API申请。

        (二)百度大脑Python库安装

        通过命令:pip install baidu-aip进行安装,或者利用Mind+软件的库管理功能进行安装。

        我是直接在Mind+软件中进行安装的,输入baidu-aip库名称后,点击安装,之后提示该python库已经安装。

image-20221218235918-6.png

 图6

        跳转到库列表页面,发现确实已经安装了baidu-aip库,说明行空板系统镜像unihiker_v0.3.3版本已经内置了大部分常用AI库了,还是挺方便的。

image-20221218235918-7.png

 图7

        (三)百度在线语音识别测试

        (1)Python编程:

from unihiker import GUI,Audio  #导入unihiker包
from aip import AipSpeech       #导入baidu-aip包
import time

gui = GUI()                     #实例化GUI类
audio = Audio()                 #实例化Audio类

#gui添加背景图片
gui.draw_image(x=0, y=0, w=240, h=320, image='bj1.jpeg')
#gui添加文本标题
gui.draw_text(x=50, y=20,color="#4169E1", font_size=18,text="语音识别助手")
#gui添加按钮信息
gui.add_button(x=60, y=290, w=60, h=30, text="录音", origin='center', onclick=lambda:Record() )
gui.add_button(x=180, y=290, w=60, h=30, text="识别", origin='center', onclick=lambda: Recognition() )
#识别显示信息
info_text2 = gui.draw_text(x=0, y=60,color="white",text="")

""" Baidu APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

#读取文件
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

#识别本地录音文件
def voiceToText():
    res = client.asr(get_file_content('3s.wav'), 'wav', 16000, {
            'dev_pid': 1537,
        })
    return res.get('result')[0]

def Record():
    info_text2.config(x=0, y=60, text="")          #清空识别信息显示栏
    audio.record('3s.wav', 3)                      #录音3S
    info_text2.config(x=0, y=60, text="录音完成")   #清空识别信息显示栏

def Recognition():
    msg = voiceToText()
    info_text2.config(x=0, y=60, text=msg)         #更新识别显示的信息

while True:
    time.sleep(1)                                  #增加等待,防止程序退出和卡住

        (2)效果展示

        对着行空板说“小度,小度!”后返回的识别结果。

image-20221219000437-8.png

 图8

        (四)百度在线语音合成测试

        (1)Python编程

from unihiker import GUI,Audio  #导入unihiker包
from aip import AipSpeech       #导入baidu-aip包
import time

gui = GUI()                     #实例化GUI类
audio = Audio()                 #实例化Audio类

#gui添加背景图片
gui.draw_image(x=0, y=0, w=240, h=320, image='bj1.jpeg')
#gui添加文本标题
gui.draw_text(x=20, y=20,color="#4169E1", font_size=18,text="百度在线语音合成")
#gui添加按钮信息
gui.add_button(x=60, y=290, w=80, h=30, text="语音合成", origin='center', onclick=lambda: synthesise() )
gui.add_button(x=180, y=290, w=80, h=30, text="语音播放", origin='center', onclick=lambda: audioplay() )
#创建显示信息
info_text2 = gui.draw_text(x=0, y=60,color="white",text="")

""" Baidu APPID AK SK """
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

def synthesise():
    info_text2.config(x=0, y=60, text="")                               #清空识别信息显示栏
    info_text2.config(x=0, y=60, text="上传文本")                        #更新识别信息显示栏
    result  = client.synthesis('你好,小麦!', 'zh', 1, {'vol': 5,})
    #成功合成,返回语音二进制,错误则返回dict
    if not isinstance(result, dict):
        with open('audio.wav', 'wb') as f:
            f.write(result)
            info_text2.config(x=0, y=60, text="")                       #清空识别信息显示栏
            info_text2.config(x=0, y=60, text="语音合成成功")            #更新识别信息显示栏

def audioplay():
    info_text2.config(x=0, y=60, text="")                               #清空识别信息显示栏
    info_text2.config(x=0, y=60, text="开始播放")                        #更新识别信息显示栏
    audio.play('audio.wav')
    info_text2.config(x=0, y=60, text="播放完成")                        #更新识别信息显示栏

while True:
    time.sleep(1)                                                       #增加等待,防止程序退出和卡住

        (2)效果展示

        将文本“你好,小麦!”上传到百度AI服务器进行语音合成后,返回到本地并进行播放。

image-20221219000635-9.png

 图9

 

本帖最后由 天意无罪 于 2022-12-19 12:40 编辑

回复评论 (3)

语音的API好像是有限制 要钱的 你怎么申请的呢?
点赞  2022-12-26 22:35
引用: 吾妻思萌 发表于 2022-12-26 22:35 语音的API好像是有限制 要钱的 你怎么申请的呢?

是的,是有限制的,还是用的新注册用户的免费试用资格哈。

点赞  2022-12-27 21:31
有iPython的地方,就有好多API的东西,全部是调用接口,快速验证用的
点赞  2023-1-28 15:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复