電子語(yǔ)音玩具設(shè)計(jì)中語(yǔ)音、軟件、功耗等技術(shù)的綜合考慮

趙大有 2002/10/28

   玩具設(shè)計(jì)看似簡(jiǎn)單,但是其背后真實(shí)的技術(shù)背景并不簡(jiǎn)單,要綜合考慮軟件和硬件方面的技術(shù)設(shè)計(jì)以及語(yǔ)音處理技術(shù),同時(shí)還要選擇合適的微控制器及相關(guān)外圍器件,從而實(shí)現(xiàn)低成本和低功耗設(shè)計(jì)。

  今天孩子們的玩具實(shí)際上屬于一種嵌入式系統(tǒng),本文跳過(guò)玩具產(chǎn)品設(shè)計(jì)項(xiàng)目中的"概念設(shè)計(jì)"階段,直接從項(xiàng)目的工程設(shè)計(jì)開(kāi)始討論,并且假定項(xiàng)目的設(shè)計(jì)規(guī)格說(shuō)明書(shū)(設(shè)計(jì)指標(biāo))已經(jīng)完成。這些設(shè)計(jì)規(guī)格說(shuō)明書(shū)通常是以游戲模式流程圖的方式來(lái)詳細(xì)地描述玩具的行為。我們?cè)O(shè)想的洋娃娃游戲模式如下:

常規(guī)模式:

  A. 玩具是嬰兒洋娃娃,其腰部配備一個(gè)常態(tài)為斷開(kāi)的開(kāi)關(guān)(該開(kāi)關(guān)用來(lái)檢測(cè)擁抱洋娃娃的動(dòng)作),還有一個(gè)重力開(kāi)關(guān)(該開(kāi)關(guān)用來(lái)檢測(cè)洋娃娃是站立還是躺下姿勢(shì))。 B. 洋娃娃站立時(shí)重力開(kāi)關(guān)斷開(kāi)。 C. 洋娃娃站立時(shí),如果腰部開(kāi)關(guān)被按下,洋娃娃將播放下列聲音中的一種:哈哈地笑、長(zhǎng)時(shí)間地大笑、或者以愉快的聲調(diào)說(shuō)話。每一次按下洋娃娃的腰部開(kāi)關(guān),洋娃娃都將循環(huán)地播放上述聲音中的一種。 D. 洋娃娃躺下時(shí),如果腰部開(kāi)關(guān)被按下,那么洋娃娃會(huì)發(fā)出哭聲,然后轉(zhuǎn)為無(wú)聲。E. 如果將洋娃娃的姿勢(shì)由躺下轉(zhuǎn)為站立,洋娃娃就會(huì)打哈欠。 F. 如果將洋娃娃的姿勢(shì)由站立轉(zhuǎn)為躺下,洋娃娃就會(huì)發(fā)出簡(jiǎn)短的鼾聲,然后轉(zhuǎn)為無(wú)聲。

語(yǔ)音控制模式:

  A. 洋娃娃站立時(shí),如果超過(guò)2分鐘沒(méi)有外界信息輸入,他會(huì)說(shuō):"好寂寞呀,怎么沒(méi)人陪我玩"B.在這個(gè)時(shí)候,如果還沒(méi)有信息輸入,洋娃娃將播放下列聲音中的一種:哈哈地笑、長(zhǎng)時(shí)間地大笑、或者以愉快的聲調(diào)說(shuō)話。C. 洋娃娃站立時(shí),你可以和他進(jìn)行對(duì)話,如"你多大了?"、"你叫什么?"甚至可以和你對(duì)詩(shī)。D.如果給洋娃娃加上機(jī)械動(dòng)作,我們同樣可以用語(yǔ)音來(lái)控制它的動(dòng)作,比如你可以叫他跳舞、唱歌、行走等。

聲音處理


  

工程設(shè)計(jì)的第一步是記錄聲音并且將聲音信息傳送給芯片開(kāi)發(fā)系統(tǒng)。盡管以后還要進(jìn)行下采樣(downsapling),但是對(duì)聲音信號(hào)進(jìn)行高質(zhì)量的采樣仍然十分重要。從聲學(xué)意義上講,該記錄過(guò)程通常都應(yīng)該在絕對(duì)安靜的錄音棚環(huán)境下進(jìn)行,要采用44KHz 16位采樣方式錄制,并直接將聲音信號(hào)記錄在計(jì)算機(jī)硬盤(pán)上。通常情況下應(yīng)該聘請(qǐng)語(yǔ)音專業(yè)人員來(lái)從事錄制工作,而不是由項(xiàng)目工程師或辦公人員來(lái)錄制。每一個(gè)字詞或者短語(yǔ)最好錄音幾次,這樣就有選擇的余地。

  對(duì)于那些需要從電子樂(lè)器中獲取音樂(lè)的工程項(xiàng)目來(lái)說(shuō),更可取的方法是將藝術(shù)家的演奏效果記錄成MIDI格式。MIDI格式可以修改演奏的樂(lè)器以及播放順序,并且在必要的時(shí)候(如根據(jù)硬件進(jìn)一步調(diào)整語(yǔ)音性能)去掉多調(diào)(polyphonic)成分。

  有時(shí),音頻工程師還必須通過(guò)合并冗余的聲音信號(hào)來(lái)實(shí)現(xiàn)被采樣聲音的分解以壓縮ROM空間。一個(gè)典型實(shí)例就是從1到20之間計(jì)數(shù)的語(yǔ)音玩具。在這樣的玩具設(shè)計(jì)中,并不需要為每一個(gè)數(shù)字都單獨(dú)進(jìn)行語(yǔ)音采樣和錄音,語(yǔ)音采樣通常從數(shù)字1開(kāi)始到12,然后是數(shù)字20,接下來(lái)是音節(jié)"thir-"(數(shù)字13)、"fif-"(數(shù)字15)和"eigh-"(數(shù)字18),除此之外,還有后綴"-teen"。請(qǐng)注意,"four"、"six"、"seven"和"nine"等語(yǔ)音信號(hào)既可以表示這些數(shù)字所代表的語(yǔ)音,也可作為音節(jié)跟語(yǔ)音后綴"teen"結(jié)合表示大于10的數(shù)字的語(yǔ)音。

  對(duì)語(yǔ)音信號(hào)進(jìn)行分解的程度取決于可用存儲(chǔ)空間的大小。可以嘗試將數(shù)字31分解成"thir-"(并且這個(gè)音節(jié)還可以用于數(shù)字13和30)、"-ty"(這個(gè)音節(jié)可以用于所有帶"-ty"的數(shù)字中)以及"one"。語(yǔ)音的分解費(fèi)時(shí)費(fèi)力,要拆分和連接音節(jié),增強(qiáng)爆破音,測(cè)試連接音的不同組合以確保連接音的聲效像一個(gè)連貫字。有時(shí)為了得到僅僅幾個(gè)詞的比較理想的聲效,可能需要幾個(gè)星期時(shí)間,所以如果沒(méi)有必要應(yīng)該盡量避免更進(jìn)一步的分解。

  語(yǔ)音分解的一個(gè)極端例子是設(shè)計(jì)類似于SC-01或SPO256A-AL2這樣的音位變體語(yǔ)音合成芯片。芯片中存儲(chǔ)了(實(shí)際上是合成)一個(gè)語(yǔ)音片段庫(kù),通過(guò)這個(gè)語(yǔ)音庫(kù)你可以組合出各種各樣的詞。舉例來(lái)說(shuō),你可以從語(yǔ)音片段"d"、"ah"和"g"來(lái)構(gòu)造出"dog"。然而,要保證這種合成的聲效聽(tīng)起來(lái)非常接近于實(shí)際情況就十分困難。

微控制器的選擇

  在玩具的生產(chǎn)制造中,成本控制是一個(gè)重要的考慮因素,所以要盡量選用廉價(jià)的控制芯片。這樣一來(lái)幾乎所有帶語(yǔ)音的玩具都用4位語(yǔ)音微控制器芯片設(shè)計(jì),這些芯片都包括簡(jiǎn)單的控制器內(nèi)核、輸入和輸出管腳、寄存器以及串行訪問(wèn)的ROM,在該ROM中存入一段小程序和大量語(yǔ)音采樣信號(hào)。

  早期芯片采用簡(jiǎn)單的4位PCM編碼技術(shù),能在很短的ROM空間內(nèi)存儲(chǔ)很長(zhǎng)的語(yǔ)音編碼信號(hào)。最新的芯片都采用4位或5位ADPCM技術(shù),這是一種預(yù)測(cè)編碼系統(tǒng),它利用了模擬信號(hào)數(shù)字化過(guò)程中連續(xù)采樣之間的相關(guān)性。從算法上來(lái)說(shuō),每一個(gè)采樣值結(jié)合解碼器當(dāng)前的輸出狀態(tài)生成下一個(gè)輸出狀態(tài)。利用ADPCM技術(shù),一個(gè)5位輸入數(shù)據(jù)流可以驅(qū)動(dòng)一個(gè)8位DAC,而且可以產(chǎn)生非常好的聲效。盡管這種壓縮系統(tǒng)并不產(chǎn)生原始信號(hào)的字節(jié)流,然而這對(duì)于語(yǔ)音和音樂(lè)播放來(lái)說(shuō)已經(jīng)足夠了,同8位PCM編碼方式相比,可以節(jié)省37.5%的ROM空間。

  許多玩具采用的外部電路都非常簡(jiǎn)單,通常包括一個(gè)電池、一個(gè)用來(lái)設(shè)定芯片時(shí)基的外部電阻、一個(gè)小喇叭或一個(gè)用于驅(qū)動(dòng)喇叭的晶體管。這些芯片的價(jià)格如何呢?一般來(lái)說(shuō),可以容納兩分鐘音頻信號(hào)的掩膜微控制器裸片,量產(chǎn)條件下成本大約為每片1.20美元。絕大多數(shù)的玩具都使用更小的芯片,價(jià)格大約在0.15美元到0.30美元。本文討論的應(yīng)用選擇W583S10,在華邦公司推薦的6.4kHz采樣頻率下,該芯片僅能存儲(chǔ)10秒的語(yǔ)音數(shù)據(jù),如圖1所示。注意,電阻R1的值取決于采樣頻率。通常情況下,設(shè)計(jì)工程師會(huì)使用一個(gè)電阻替換盒來(lái)試驗(yàn)其它阻值。

  上述芯片的指令集并不豐富,其指令集通常包括對(duì)寄存器加載常量的指令、寄存器增/減指令、設(shè)置輸出管腳狀態(tài)指令、無(wú)條件跳轉(zhuǎn)指令、寄存器無(wú)條件跳轉(zhuǎn)指令以及根據(jù)輸入管腳狀態(tài)的條件跳轉(zhuǎn)指令。芯片中實(shí)現(xiàn)子程序的唯一方法是在一個(gè)寄存器中存儲(chǔ)一個(gè)返回地址。在對(duì)器件編程時(shí),要大量使用GOTO語(yǔ)句,對(duì)于一些較大的項(xiàng)目來(lái)說(shuō),程序中會(huì)出現(xiàn)許多冗余代碼。

語(yǔ)音識(shí)別(控制)系統(tǒng)的選擇

  語(yǔ)音識(shí)別系統(tǒng)的基本流程如圖1所示


圖1 語(yǔ)音識(shí)別系統(tǒng)的基本流程

  語(yǔ)音信號(hào)輸入后首先經(jīng)過(guò)濾波器,去除干擾及可能造成混淆的成分,然后由前端處理模塊提取語(yǔ)音識(shí)別所需的特征參數(shù)。當(dāng)前語(yǔ)音識(shí)別所用的特征參數(shù)主要有兩種類型:線性預(yù)測(cè)倒譜系數(shù)(Linear Prediction Cepstrum Coefficient, LPCC)和MEL頻標(biāo)倒譜系數(shù)(Mel Frequency Cepstrum Coefficient, MFCC)。

  LPCC系數(shù)主要是模擬人的發(fā)聲模型,未考慮人耳的聽(tīng)覺(jué)特性。它對(duì)元音有較好的描述能力,對(duì)輔音描述能力及抗噪性能比較差,而其優(yōu)點(diǎn)為計(jì)算量小,易于實(shí)現(xiàn)。

  MFCC系數(shù)則考慮到了人耳的聽(tīng)覺(jué)特性,具有較好的識(shí)別性能。但是,由于它需要進(jìn)行快速傅立葉變換(Fast Fourier Transform Algorithm, FFT),將語(yǔ)音信號(hào)由時(shí)域變換到頻域上處理,因此其計(jì)算量和計(jì)算精度要求高,必須在DSP上完成。

  在此,我們選擇準(zhǔn)確率最高、功能最全、價(jià)格最適宜的Sensory語(yǔ)音識(shí)別芯片(RSC164或RSC364)。

RSC-364

  由美國(guó)Sensory Integrated Circuit公司開(kāi)發(fā),2000年開(kāi)始生產(chǎn),是一顆為消費(fèi)類電子產(chǎn)品應(yīng)用的低價(jià)位的語(yǔ)音識(shí)別專用芯片,其結(jié)構(gòu)圖如圖2所示。

  RSC-364是一片以8位MCU為核心的CMOS器件,片上還集成了ROM、RAM、A/D、


  D/A、前端放大器及功率放大器件。因此,可以說(shuō)它是一顆片上系統(tǒng)(SOC),只要加上很少的外圍元件就可以組成一個(gè)語(yǔ)音識(shí)別系統(tǒng)。其運(yùn)算能力為4MIPS(Million Instructions Per Second),為了提高運(yùn)算能力,片上包括了一個(gè)24位×24位的乘法器。

  RSC-364使用預(yù)先學(xué)習(xí)好的人工神經(jīng)網(wǎng)絡(luò)進(jìn)行非特定人語(yǔ)音識(shí)別,不需要經(jīng)過(guò)訓(xùn)練就可以識(shí)別"Yes"、"No"、"Ok"等簡(jiǎn)單語(yǔ)句,其Data Book上稱其識(shí)別率為97%。此外,RSC-364可以識(shí)別特定人、孤立詞命令語(yǔ)句,約60條左右,其Data Book上稱其識(shí)別率為99%以上。

  RSC-364還具有5~15kb/s的語(yǔ)音合成,其語(yǔ)音合成由Sensory專門(mén)設(shè)計(jì),其音質(zhì)較好。它還具有改進(jìn)的ADPCM(自適應(yīng)差分脈沖調(diào)制)語(yǔ)音編解碼功能,用作語(yǔ)音回放。

降低功耗

  功耗是設(shè)計(jì)中另一個(gè)非常重要的考慮因素。絕大多數(shù)配備語(yǔ)音功能的玩具從工廠郵寄出去之前都預(yù)先安裝了電池,而且都希望擺放在貨架上的玩具內(nèi)的電池經(jīng)久耐用。許多玩具都沒(méi)有電源開(kāi)關(guān),并且絕大多數(shù)的玩具還提供一種"試用"模式,所以商店里所有的顧客都可能按一下某一個(gè)按鈕來(lái)看一看或聽(tīng)一聽(tīng)玩具會(huì)做什么樣的反應(yīng)。因此,關(guān)閉芯片中所有不需要使用的電路就至關(guān)重要,而且必須確保玩具在演奏完所有的語(yǔ)音序列之后應(yīng)該盡可能完全將其功耗降下來(lái)。

  功耗方面一個(gè)非常重要的問(wèn)題在于ADPCM編碼的使用。如果在演奏完一段聲音之后簡(jiǎn)單地停止該微控制器芯片,輸出DAC會(huì)出現(xiàn)一個(gè)非零的輸出電壓(大約接近最大電壓值的一半)。如果在每一個(gè)采樣數(shù)據(jù)之后關(guān)閉DAC,那會(huì)發(fā)出非常討厭的滴答聲。考慮到這些原因,芯片制造廠商提供一段匯編程序來(lái)實(shí)現(xiàn)DAC輸出電壓值從0V到半峰值的線性變化,或者半峰值到0V線性變化。當(dāng)一段采樣數(shù)據(jù)播出之后,可以調(diào)用該宏來(lái)實(shí)現(xiàn)DAC輸出逐漸減弱到0V;當(dāng)重新開(kāi)始演奏一段新的采樣數(shù)據(jù)時(shí),可以調(diào)用該宏將DAC輸出數(shù)據(jù)逐漸增大到半峰值電壓。通過(guò)這種方法可以有效地降低功耗。

  為了達(dá)到延長(zhǎng)電池壽命的目的,程序大量采用中斷驅(qū)動(dòng)的方式。一旦系統(tǒng)加電啟動(dòng),如果程序允許輸入管腳上的中斷信號(hào)有效,對(duì)輸入管腳上的每一個(gè)事件(對(duì)應(yīng)一個(gè)中斷),微控制器芯片都會(huì)在一個(gè)預(yù)先定義好的位置開(kāi)始執(zhí)行。而一旦遇到"STOP"指令時(shí),微控制器的功耗就會(huì)完全降下來(lái)。

軟件代碼

  一個(gè)實(shí)際玩具的行為通常可能比較復(fù)雜。例如,我們更喜歡在打鼾或者是打哈欠語(yǔ)音之前插入半秒鐘的停頓,這樣會(huì)使得聲效的感覺(jué)更逼真。實(shí)際應(yīng)用中,可能希望在播放聲音信號(hào)時(shí)讓中斷信號(hào)無(wú)效,以便該玩具在識(shí)別進(jìn)一步的輸入時(shí)能夠完成聲音信號(hào)的播放。有關(guān)這些問(wèn)題的最佳解決方案就是創(chuàng)建和測(cè)試這些代碼,并且需要豐富經(jīng)驗(yàn)以及個(gè)人的判斷。另外,也可采用"試用"模式,在這種模式下洋娃娃僅僅會(huì)對(duì)按下腰部開(kāi)關(guān)的動(dòng)作做出響應(yīng)(這樣可以避免在產(chǎn)品郵寄過(guò)程中消耗電池)。通常是在洋娃娃的一對(duì)觸點(diǎn)之間插入一根塑料抽條來(lái)隔離接觸點(diǎn),除非購(gòu)買(mǎi)該產(chǎn)品的最終用戶去掉了這根塑料條,重力開(kāi)關(guān)將始終無(wú)效。

聲效問(wèn)題值得關(guān)注

  如果這些代碼的執(zhí)行效果令人滿意,就可以開(kāi)始對(duì)這些聲音文件進(jìn)行壓縮和優(yōu)化。壓縮過(guò)程包括低通和/或高通濾波,消除那些不需要的回聲并且改進(jìn)聲效。細(xì)心的設(shè)計(jì)工程師可能會(huì)注意到爆破音或摩擦音的處理,以便將這些聲音容易地區(qū)別開(kāi)來(lái),這對(duì)于拼寫(xiě)類游戲和教育類產(chǎn)品來(lái)說(shuō)很有必要。而對(duì)于嘴唇運(yùn)動(dòng)與語(yǔ)音同步的玩具,嘴形控制信號(hào)會(huì)同時(shí)嵌入到聲音文件中。

  要對(duì)16位44.1kHz的WAV文件進(jìn)行濾波和編輯,然后對(duì)這些文件進(jìn)行下采樣以達(dá)到最終芯片所要求的采樣速率(通常情況下為6kHz到8kHz內(nèi))。利用芯片廠商的工具鏈可以將輸入的文件轉(zhuǎn)換為微控制器芯片所采用的ADPCM格式。選擇精確的采樣率可以最大限度地利用ROM空間。微控制器和ROM空間選擇之后,在保證編譯器能將全部的聲音信號(hào)存入到芯片的條件下,要選用最高的采樣頻率。

  就編譯器而言,不要指望為價(jià)值10美分的芯片提供一個(gè)高品質(zhì)的開(kāi)發(fā)系統(tǒng)。開(kāi)發(fā)系統(tǒng)很普通,絕大多數(shù)廠商提供的軟件可能還非常糟糕,可能存在大量奇怪的問(wèn)題和難以解釋的行為。在編譯過(guò)程中可能還會(huì)產(chǎn)生很多問(wèn)題,例如:某個(gè)聲音文件被拒絕處理,在對(duì)其長(zhǎng)度作稍微的刪減或增加后又能執(zhí)行了;而代碼間空格太多或太少會(huì)產(chǎn)生錯(cuò)誤報(bào)表。

  該階段的測(cè)試最好用具備真實(shí)外形的玩具樣品進(jìn)行。在可能的情況下,最好使用設(shè)計(jì)所指定的喇叭來(lái)測(cè)量,因?yàn)槔鹊念愋蛯?duì)于最終的聲效有很大的影響。廉價(jià)的玩具語(yǔ)音芯片也可以驅(qū)動(dòng)設(shè)計(jì)很好的優(yōu)質(zhì)喇叭并產(chǎn)生高保真度的聲音。喇叭的類型、大小和安裝位置對(duì)最終產(chǎn)品聲效有很大影響,并直接影響到產(chǎn)品的銷售。

  至今為止,所有的開(kāi)發(fā)都在芯片商提供的開(kāi)發(fā)板上完成,并采用閃爍存儲(chǔ)器來(lái)存儲(chǔ)程序。最終的產(chǎn)品實(shí)際上都采用一個(gè)板上掩膜ROM,該裸片直接邦定在PCB上,然后由一小團(tuán)樹(shù)脂材料封裝起來(lái)。

本文總結(jié)

  新玩具產(chǎn)品要得到公司主管的欣賞并不容易,抱怨通常會(huì)很多,例如會(huì)笑的玩具聽(tīng)起來(lái)像"惡魔的聲音"(實(shí)際上就存在這樣的訴訟案例);詼諧的玩具又"太低級(jí)趣味";有的玩具很容易引起驚慌,這是因?yàn)橥婢咄话l(fā)大聲或猛然動(dòng)作的緣故;馬達(dá)或齒輪噪聲太大等。要解決這些問(wèn)題,工程師還要進(jìn)行一系列的調(diào)整。

深圳捷通公司供稿 CTI論壇編輯



相關(guān)鏈接:
捷通82語(yǔ)音識(shí)別模塊產(chǎn)品說(shuō)明書(shū) 2003-06-09
語(yǔ)音合成芯片情況介紹和產(chǎn)品設(shè)想 2003-05-06
數(shù)字可視復(fù)讀機(jī)方案 2003-04-09
語(yǔ)音識(shí)別控制電話機(jī)方案 2003-04-04
智能早教機(jī)方案 2003-04-03

分類信息:  語(yǔ)音合成TTS_與_語(yǔ)音識(shí)別ASR     技術(shù)_語(yǔ)音合成_文摘   技術(shù)_語(yǔ)音識(shí)別_文摘
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 十堰市| 福泉市| 龙门县| 孝义市| 汉川市| 井研县| 万源市| 临湘市| 武胜县| 福鼎市| 大安市| 屏东县| 称多县| 黄冈市| 米泉市| 正阳县| 嫩江县| 墨玉县| 封丘县| 饶阳县| 深圳市| 垣曲县| 汉川市| 大冶市| 汶上县| 凤庆县| 吐鲁番市| 高要市| 防城港市| 临沧市| 扶风县| 滨海县| 嘉兴市| 义乌市| 读书| 元氏县| 玉树县| 手游| 交口县| 津市市| 卢龙县| http://444 http://444 http://444 http://444 http://444 http://444