基于ASRPRO的語(yǔ)音對(duì)話 - 詳解
目錄
最近在研究一個(gè)小項(xiàng)目,我打算加入語(yǔ)音對(duì)話來(lái)提高體驗(yàn)度,在上篇文章的基礎(chǔ)上趁熱打鐵便有了這篇文章。
在本文中,我將介紹如何基于ASRPRO搭建一個(gè)簡(jiǎn)單的語(yǔ)音對(duì)話工程。
效果展示
否使用ASRPRO。就是下面的鏈接是我初步制作的內(nèi)容,目前還在改進(jìn)中。我這里使用的是另一種音頻轉(zhuǎn)換發(fā)方式,比本文介紹的方法損失的音質(zhì)較多,請(qǐng)大家自行甄別
(PS:語(yǔ)音素材是我自己錄制游戲音頻剪的,有需求的可以評(píng)論區(qū)講一下。)
基于ASRPro做的一個(gè)小語(yǔ)音對(duì)話助手_嗶哩嗶哩_bilibili
前置準(zhǔn)備
在開(kāi)始之前,我們需要做以下準(zhǔn)備:
1.安裝天問(wèn)Block,我這里使用的軟件版本是2025夏季正式版。
ASRPRO的編程軟件,圖形化編程,超簡(jiǎn)單)就是(這
2.準(zhǔn)備好大家需的語(yǔ)音。(語(yǔ)音建議大家先做好備份,防止意外丟失)
環(huán)境配置
天問(wèn)Block安裝好之后,我們需要注冊(cè)一個(gè)賬號(hào),由于沒(méi)有賬號(hào)的話是不允許我們生成語(yǔ)音模型的。
在設(shè)備處,我們選ASRPRO。
在 項(xiàng)目 下行選擇新建或打開(kāi)已有工程,這里我隨便起一個(gè)名字abc,直接保存在桌面上。這時(shí),我們應(yīng)該會(huì)看到工具自動(dòng)生成的代碼。
然后我們?cè)谧髠?cè)點(diǎn)擊 添加擴(kuò)展 安裝了叫做 播放語(yǔ)音ID 的庫(kù)。

除了軟件默認(rèn)的這些圖形模塊,官方還提供了海量的官方擴(kuò)展庫(kù)可用戶自己設(shè)計(jì)的庫(kù)。通過(guò)這個(gè)模塊我們就行在邏輯判斷的語(yǔ)句體里播放對(duì)應(yīng)的語(yǔ)音。
工程分析
下圖為我前面那個(gè)演示的工程,我將通過(guò)對(duì)這個(gè)工程的講解讓大家能上手采用語(yǔ)音識(shí)別模塊。

我們先看左邊的上電初始化,開(kāi)頭有一個(gè)播報(bào)音設(shè)置,官方提供了很多聲音供我們啟用,在這個(gè)模塊還可以修改聲音的語(yǔ)速和音量,但是如果我們把全部語(yǔ)音替換掉的話,其實(shí)也沒(méi)什么用,不用管它。
此外默認(rèn)情況下還會(huì)有上電播放的歡迎詞和提示進(jìn)入休眠狀態(tài)的退出語(yǔ)音,我這里用不上所以去掉了。
識(shí)別詞
往下,我們看到添加識(shí)別詞這里。識(shí)別詞就是我們說(shuō)的話,當(dāng)模塊識(shí)別到該辭職后就會(huì)觸發(fā)相應(yīng)的邏輯。
喚醒詞:當(dāng)模塊檢測(cè)到該詞之后,模塊才會(huì)對(duì)命令詞有反應(yīng)。
命令詞:除了在檢測(cè)到喚醒詞之后才能被識(shí)別,其他同喚醒詞。
我們?cè)诨貜?fù)語(yǔ)音輸入框內(nèi)輸入的話。我們可以不設(shè)置識(shí)別詞的回復(fù)語(yǔ)音,同樣識(shí)別詞的語(yǔ)音也可以被替換,替換方式會(huì)在后面講。就是當(dāng)檢測(cè)到識(shí)別詞之后,模塊可以回應(yīng)我們一個(gè)語(yǔ)音,在默認(rèn)狀態(tài)下該語(yǔ)音就
最后是識(shí)別標(biāo)識(shí)ID,它就是我們識(shí)別詞的標(biāo)號(hào),應(yīng)用在后面的邏輯判斷里面,比如檢測(cè)到標(biāo)識(shí)ID為0時(shí),讓某個(gè)引腳輸出高電平。
添加播放語(yǔ)音
下一部分就是添加語(yǔ)音。同樣,在不替換音頻的情況下模塊會(huì)默認(rèn)播放我們輸入的文字。后面的播放ID也是這段語(yǔ)音的標(biāo)識(shí),也是用于邏輯執(zhí)行里面。
注意!!!識(shí)別詞的ID不能和播放語(yǔ)音的ID重復(fù)!!!
在上電初始化里我們還可以進(jìn)行一些引腳和其他功能的初始化,我這里暫時(shí)沒(méi)有使用那么多功能,所以沒(méi)有加進(jìn)來(lái)。
通過(guò)現(xiàn)在讓大家看一下右邊的一大坨。首先是退出時(shí)間,注意,這個(gè)退出時(shí)間是從最后一個(gè)識(shí)別詞被識(shí)別到開(kāi)始算的。在我現(xiàn)在使用的這個(gè)軟件版本里,我們能夠選擇是模塊永遠(yuǎn)不休眠。
我在這里利用的都是if判斷,都是如果識(shí)別到某個(gè)識(shí)別ID,然后播放對(duì)應(yīng)的語(yǔ)音。
到這里為止,我們的邏輯就寫好了,接下來(lái)就是替換語(yǔ)音了。
語(yǔ)音替換
首先,我們得點(diǎn)擊生成模型,生成所有語(yǔ)音,之后在 更多->一鍵替換語(yǔ)音 處打開(kāi)如下圖界面。
大家可以看到,左邊就是我們行替換的音頻。右邊的資料是我添加的,軟件支持wav等文件格式,大家不需要擔(dān)心音頻文件太大會(huì)導(dǎo)致內(nèi)存溢出,所有音頻文件會(huì)通過(guò)軟件的音頻轉(zhuǎn)換功能進(jìn)行壓縮轉(zhuǎn)換,我工程里使用的13條共10M大小的語(yǔ)音經(jīng)過(guò)轉(zhuǎn)換大小為1M,但是音質(zhì)肯定會(huì)有損傷。我使用的模塊自帶2M的內(nèi)存,對(duì)于一些小特性還是完全夠用的。假設(shè)你的語(yǔ)音文件很多,許可買一個(gè)內(nèi)存模塊連到與語(yǔ)音識(shí)別模塊上面。
喚醒詞的回復(fù)語(yǔ)音。10001和10002為歡迎和退出語(yǔ)音,所以為空。就是大家看編號(hào)為0的那條語(yǔ)音,這個(gè)就
替換時(shí)大家點(diǎn)擊替換按鍵,選擇要換上的音頻文件即可,最終一鍵替換就能完成。
最后連接語(yǔ)音識(shí)別模塊,點(diǎn)擊2M編譯下載,等待下載完成我們就能體驗(yàn)我們的成果啦。

浙公網(wǎng)安備 33010602011771號(hào)