天意无罪 发表于 2022-12-19 00:07

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

<div class='showpostmsg'> 本帖最后由 天意无罪 于 2022-12-19 12:40 编辑

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

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

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)百度大脑账号注册即API申请;</p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(2)百度大脑Python库安装;</p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(3)百度在线语音识别测试;</p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(4)百度在线语音合成测试。</p>

<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(一)百度大脑账号注册即API申请</strong></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在百度&ldquo;站长与开发者服务&rdquo;产品列表中找到&ldquo;百度大脑&rdquo;并进入。</p>

<p align="center"></p>

<p style="text-align: center;">图1</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入&ldquo;百度大脑&rdquo;首页后,我们依次选择&ldquo;开放能力&rdquo;、&ldquo;语音技术&rdquo;、&ldquo;语音识别&rdquo;,进入语音识别页面。</p>

<p align="center"></p>

<p style="text-align: center;">&nbsp;图2</p>

<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;进入语音识别页面后,点击&ldquo;立即使用&rdquo;,进入百度智能云管理页面。</p>

<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;说明:如果没有百度账号需要提前注册;</p>

<p align="center"></p>

<p style="text-align: center;">图3</p>

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

<p align="center"></p>

<p style="text-align: center;">&nbsp;图4</p>

<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;接下来是创建应用API,获得API的AppID、API Key,以及Secret Key。</p>

<p align="center"></p>

<p style="text-align: center;">&nbsp;图5</p>

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

<p><strong>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(二)百度大脑Python库安装</strong></p>

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

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

<p align="center"></p>

<p style="text-align: center;">&nbsp;图6</p>

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

<p align="center"></p>

<p style="text-align: center;">&nbsp;图7</p>

<p><strong>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(三)百度在线语音识别测试</strong></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)Python编程:</p>

<pre>
<code class="language-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')

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)                                  #增加等待,防止程序退出和卡住</code></pre>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(2)效果展示</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对着行空板说&ldquo;小度,小度!&rdquo;后返回的识别结果。</p>

<p align="center"></p>

<p style="text-align: center;">&nbsp;图8</p>

<p>&nbsp;<strong> &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(四)百度在线语音合成测试</strong></p>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(1)Python编程</p>

<pre>
<code class="language-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)                                                       #增加等待,防止程序退出和卡住</code></pre>

<p>&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;(2)效果展示</p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将文本&ldquo;你好,小麦!&rdquo;上传到百度AI服务器进行语音合成后,返回到本地并进行播放。</p>

<p align="center"></p>

<p style="text-align: center;">&nbsp;图9</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

吾妻思萌 发表于 2022-12-26 22:35

语音的API好像是有限制 要钱的 你怎么申请的呢?

天意无罪 发表于 2022-12-27 21:31

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

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

piazini 发表于 2023-1-28 15:42

有iPython的地方,就有好多API的东西,全部是调用接口,快速验证用的
页: [1]
查看完整版本: 【行空板 Python编程学习主控板】评测十、百度AI在线语音识别及合成