電子語音玩具設計中語音、軟件、功耗等技術的綜合考慮
趙大有 2002/10/28
玩具設計看似簡單,但是其背后真實的技術背景并不簡單,要綜合考慮軟件和硬件方面的技術設計以及語音處理技術,同時還要選擇合適的微控制器及相關外圍器件,從而實現低成本和低功耗設計。 今天孩子們的玩具實際上屬于一種嵌入式系統(tǒng),本文跳過玩具產品設計項目中的"概念設計"階段,直接從項目的工程設計開始討論,并且假定項目的設計規(guī)格說明書(設計指標)已經完成。這些設計規(guī)格說明書通常是以游戲模式流程圖的方式來詳細地描述玩具的行為。我們設想的洋娃娃游戲模式如下:
常規(guī)模式:
A. 玩具是嬰兒洋娃娃,其腰部配備一個常態(tài)為斷開的開關(該開關用來檢測擁抱洋娃娃的動作),還有一個重力開關(該開關用來檢測洋娃娃是站立還是躺下姿勢)。
B. 洋娃娃站立時重力開關斷開。 C. 洋娃娃站立時,如果腰部開關被按下,洋娃娃將播放下列聲音中的一種:哈哈地笑、長時間地大笑、或者以愉快的聲調說話。每一次按下洋娃娃的腰部開關,洋娃娃都將循環(huán)地播放上述聲音中的一種。
D. 洋娃娃躺下時,如果腰部開關被按下,那么洋娃娃會發(fā)出哭聲,然后轉為無聲。E. 如果將洋娃娃的姿勢由躺下轉為站立,洋娃娃就會打哈欠。 F.
如果將洋娃娃的姿勢由站立轉為躺下,洋娃娃就會發(fā)出簡短的鼾聲,然后轉為無聲。
語音控制模式:
A. 洋娃娃站立時,如果超過2分鐘沒有外界信息輸入,他會說:"好寂寞呀,怎么沒人陪我玩"B.在這個時候,如果還沒有信息輸入,洋娃娃將播放下列聲音中的一種:哈哈地笑、長時間地大笑、或者以愉快的聲調說話。C.
洋娃娃站立時,你可以和他進行對話,如"你多大了?"、"你叫什么?"甚至可以和你對詩。D.如果給洋娃娃加上機械動作,我們同樣可以用語音來控制它的動作,比如你可以叫他跳舞、唱歌、行走等。
聲音處理
工程設計的第一步是記錄聲音并且將聲音信息傳送給芯片開發(fā)系統(tǒng)。盡管以后還要進行下采樣(downsapling),但是對聲音信號進行高質量的采樣仍然十分重要。從聲學意義上講,該記錄過程通常都應該在絕對安靜的錄音棚環(huán)境下進行,要采用44KHz
16位采樣方式錄制,并直接將聲音信號記錄在計算機硬盤上。通常情況下應該聘請語音專業(yè)人員來從事錄制工作,而不是由項目工程師或辦公人員來錄制。每一個字詞或者短語最好錄音幾次,這樣就有選擇的余地。
對于那些需要從電子樂器中獲取音樂的工程項目來說,更可取的方法是將藝術家的演奏效果記錄成MIDI格式。MIDI格式可以修改演奏的樂器以及播放順序,并且在必要的時候(如根據硬件進一步調整語音性能)去掉多調(polyphonic)成分。
有時,音頻工程師還必須通過合并冗余的聲音信號來實現被采樣聲音的分解以壓縮ROM空間。一個典型實例就是從1到20之間計數的語音玩具。在這樣的玩具設計中,并不需要為每一個數字都單獨進行語音采樣和錄音,語音采樣通常從數字1開始到12,然后是數字20,接下來是音節(jié)"thir-"(數字13)、"fif-"(數字15)和"eigh-"(數字18),除此之外,還有后綴"-teen"。請注意,"four"、"six"、"seven"和"nine"等語音信號既可以表示這些數字所代表的語音,也可作為音節(jié)跟語音后綴"teen"結合表示大于10的數字的語音。
對語音信號進行分解的程度取決于可用存儲空間的大小?梢試L試將數字31分解成"thir-"(并且這個音節(jié)還可以用于數字13和30)、"-ty"(這個音節(jié)可以用于所有帶"-ty"的數字中)以及"one"。語音的分解費時費力,要拆分和連接音節(jié),增強爆破音,測試連接音的不同組合以確保連接音的聲效像一個連貫字。有時為了得到僅僅幾個詞的比較理想的聲效,可能需要幾個星期時間,所以如果沒有必要應該盡量避免更進一步的分解。
語音分解的一個極端例子是設計類似于SC-01或SPO256A-AL2這樣的音位變體語音合成芯片。芯片中存儲了(實際上是合成)一個語音片段庫,通過這個語音庫你可以組合出各種各樣的詞。舉例來說,你可以從語音片段"d"、"ah"和"g"來構造出"dog"。然而,要保證這種合成的聲效聽起來非常接近于實際情況就十分困難。
微控制器的選擇
在玩具的生產制造中,成本控制是一個重要的考慮因素,所以要盡量選用廉價的控制芯片。這樣一來幾乎所有帶語音的玩具都用4位語音微控制器芯片設計,這些芯片都包括簡單的控制器內核、輸入和輸出管腳、寄存器以及串行訪問的ROM,在該ROM中存入一段小程序和大量語音采樣信號。
早期芯片采用簡單的4位PCM編碼技術,能在很短的ROM空間內存儲很長的語音編碼信號。最新的芯片都采用4位或5位ADPCM技術,這是一種預測編碼系統(tǒng),它利用了模擬信號數字化過程中連續(xù)采樣之間的相關性。從算法上來說,每一個采樣值結合解碼器當前的輸出狀態(tài)生成下一個輸出狀態(tài)。利用ADPCM技術,一個5位輸入數據流可以驅動一個8位DAC,而且可以產生非常好的聲效。盡管這種壓縮系統(tǒng)并不產生原始信號的字節(jié)流,然而這對于語音和音樂播放來說已經足夠了,同8位PCM編碼方式相比,可以節(jié)省37.5%的ROM空間。
許多玩具采用的外部電路都非常簡單,通常包括一個電池、一個用來設定芯片時基的外部電阻、一個小喇叭或一個用于驅動喇叭的晶體管。這些芯片的價格如何呢?一般來說,可以容納兩分鐘音頻信號的掩膜微控制器裸片,量產條件下成本大約為每片1.20美元。絕大多數的玩具都使用更小的芯片,價格大約在0.15美元到0.30美元。本文討論的應用選擇W583S10,在華邦公司推薦的6.4kHz采樣頻率下,該芯片僅能存儲10秒的語音數據,如圖1所示。注意,電阻R1的值取決于采樣頻率。通常情況下,設計工程師會使用一個電阻替換盒來試驗其它阻值。
上述芯片的指令集并不豐富,其指令集通常包括對寄存器加載常量的指令、寄存器增/減指令、設置輸出管腳狀態(tài)指令、無條件跳轉指令、寄存器無條件跳轉指令以及根據輸入管腳狀態(tài)的條件跳轉指令。芯片中實現子程序的唯一方法是在一個寄存器中存儲一個返回地址。在對器件編程時,要大量使用GOTO語句,對于一些較大的項目來說,程序中會出現許多冗余代碼。
語音識別(控制)系統(tǒng)的選擇
語音識別系統(tǒng)的基本流程如圖1所示
圖1 語音識別系統(tǒng)的基本流程
語音信號輸入后首先經過濾波器,去除干擾及可能造成混淆的成分,然后由前端處理模塊提取語音識別所需的特征參數。當前語音識別所用的特征參數主要有兩種類型:線性預測倒譜系數(Linear
Prediction Cepstrum Coefficient, LPCC)和MEL頻標倒譜系數(Mel Frequency Cepstrum
Coefficient, MFCC)。
LPCC系數主要是模擬人的發(fā)聲模型,未考慮人耳的聽覺特性。它對元音有較好的描述能力,對輔音描述能力及抗噪性能比較差,而其優(yōu)點為計算量小,易于實現。
MFCC系數則考慮到了人耳的聽覺特性,具有較好的識別性能。但是,由于它需要進行快速傅立葉變換(Fast Fourier Transform
Algorithm, FFT),將語音信號由時域變換到頻域上處理,因此其計算量和計算精度要求高,必須在DSP上完成。
在此,我們選擇準確率最高、功能最全、價格最適宜的Sensory語音識別芯片(RSC164或RSC364)。
RSC-364
由美國Sensory Integrated Circuit公司開發(fā),2000年開始生產,是一顆為消費類電子產品應用的低價位的語音識別專用芯片,其結構圖如圖2所示。
RSC-364是一片以8位MCU為核心的CMOS器件,片上還集成了ROM、RAM、A/D、
深圳捷通公司供稿 CTI論壇編輯
捷通82語音識別模塊產品說明書 2003-06-09 |
語音合成芯片情況介紹和產品設想 2003-05-06 |
數字可視復讀機方案 2003-04-09 |
語音識別控制電話機方案 2003-04-04 |
智能早教機方案 2003-04-03 |