紀春龍 鐘偉堅 李天生 朱康錄 張 棟 劉華珠
(東莞理工學院 電子工程學院,廣東東莞 523808)
一種語音撥號手機通訊錄的設計
紀春龍 鐘偉堅 李天生 朱康錄 張 棟 劉華珠
(東莞理工學院 電子工程學院,廣東東莞 523808)
以凌陽16位單片機SPCE061A精簡開發(fā)板為核心,外擴SPLC501液晶顯示模組,SPR4096存儲芯片模組以及4x4矩陣鍵盤構(gòu)建語音撥號手機通訊錄模型,實現(xiàn)輸入法的鍵入以及通訊錄條目的瀏覽、新增和搜索,并通過SPCE061A特有的語音識別功能實現(xiàn)通訊錄條目的語音撥號。
語音撥號;手機,通訊錄;SPCE061A;輸入法
當今時代,手機是人們生活必不可少的通訊工具,接打電話是手機最基本的功能。傳統(tǒng)的手機通訊錄設計,采用按鍵或觸摸屏進行操作,在撥打電話時往往要在數(shù)目眾多的通訊錄中逐一查找指定的聯(lián)系人,十分繁瑣,耗費很多時間。本系統(tǒng)采用的是語音識別技術,通過語音向手機直接發(fā)出命令,促使其做出相應回應,不但可以解決了手工操作的不便,同時也變得更為智能化和人性化。語音撥號是語音處理技術在結(jié)合手機應用的過程中不斷深入的產(chǎn)物[1]。
本文使用凌陽SPCE061A單片機作為開發(fā)平臺[2],通過構(gòu)建手機通訊錄模型,采用特定發(fā)音人語音識別向系統(tǒng)錄入語音訓練特征模型,系統(tǒng)匹配后得出識別結(jié)果,實現(xiàn)語音撥號功能。
1.1 ADC轉(zhuǎn)換器類型
ADC轉(zhuǎn)換器根據(jù)其轉(zhuǎn)換的速度與精度的劃分,大概可以分成兩類:一類是應用于中速或低速、中等精度的數(shù)據(jù)采集儀器中。主要有逐次逼近型、積分型、壓頻變換型等。另一類是適用于高速情況下瞬態(tài)信號處理領域中。主要有分級型和流水線型。這次所用的是逐次逼近型的ADC轉(zhuǎn)換器。
1.2 逐次逼近型ADC轉(zhuǎn)換器工作原理
SAR ADC包括采樣保持電路、比較器、數(shù)模轉(zhuǎn)換器、逐次逼近寄存器和邏輯控制單元。模擬輸入電壓VIM由采樣保持電路采樣并保持,為實現(xiàn)二進制搜索算法,首先由SAR LOGIC控制M位寄存器設置在中間刻度,即令最高有效位MSB為“1”電平而其余位均為“0”電平,此時數(shù)字模擬轉(zhuǎn)換器DAC輸出電壓VDAC為0.5 VREF,其中VREF為提供給ADC的基準電壓。由比較器對VIM和VDAC進行比較,若VIM>VDAC,則比較器輸出“1”電平,M位寄存器的MSB保持“1”電平;反之,若VIM<VDAC,則比較器輸出“0”電平,M位寄存器的MSB被置為“0”電平。一次比較結(jié)束后,MSB被置為相應的電平,同時邏輯控制單元移至次高位并將其置“1”,其余位置“0”,進行下一次比較,直至最低有效位LSB比較完畢。整個過程結(jié)束,即完成了一次模擬量到數(shù)字量的轉(zhuǎn)換,M位轉(zhuǎn)換結(jié)果存儲在寄存器內(nèi),并由此最終輸出所轉(zhuǎn)化模擬量的數(shù)字碼。
1.3 音頻輸入原理
利用硬件電路上8個10位ADC通道中一個專用于語音的輸入通道MIC-IM。模擬信號(輸入的語音信號)先通過自動增益控制器和放大器放大后,再進行A/D轉(zhuǎn)換。當A/D轉(zhuǎn)換結(jié)束后,轉(zhuǎn)換得出的數(shù)據(jù)將通過MIC-IM通道存儲到特定的儲存區(qū)中。
系統(tǒng)以SPCE061A為主控芯片,通過構(gòu)建數(shù)組通信結(jié)構(gòu),在其內(nèi)部FLASH中保存通訊錄內(nèi)容,同時還保存了語音識別模型,如圖1所示。SPCE061A通過掃描4*4獨立按鍵,實現(xiàn)了對液晶屏幕SPLC501操作界面的控制和顯示。同時,SPR4096模組中保存了液晶所需顯示的字體,字符,數(shù)字及輸入法數(shù)據(jù)。主板上集成輸入電路模塊,通過該模塊實現(xiàn)語音撥號的功能。
圖1 系統(tǒng)硬件接口
構(gòu)建一個操作系統(tǒng),需要有一個可視化的人機互動界面,這個界面可以通過菜單來實現(xiàn),如圖2所示,系統(tǒng)初始化后進入菜單,菜單中有4個選項,分別對應瀏覽通訊錄條目、新增通訊錄、搜索通訊錄和語音撥號四個主要功能函數(shù),而瀏覽通訊錄條目又對應一個子菜單,選擇當中某一存入的聯(lián)系人便可進入該聯(lián)系人的管理界面,分別有查看信息、刪除條目和設定語音撥號或者取消語音撥號三個選項,如果語音撥號最大數(shù)量已滿,則只顯示前面兩個選項。同理,其他選項當按鍵進入時,便可相應地調(diào)用其子函數(shù),通過菜單的指引,使得系統(tǒng)的操作及功能的實現(xiàn)變得靈活方便。
圖2 菜單構(gòu)建
本設計中的通訊錄模型有兩大主體,一是通訊錄條目數(shù)據(jù)結(jié)構(gòu)的構(gòu)建[3],采用數(shù)據(jù)結(jié)構(gòu)中的雙鏈表構(gòu)建[4],這種結(jié)構(gòu)的特點是數(shù)據(jù)的插入、刪除和查詢等操作很方便,可以有效提高程序遍歷通訊錄的效率,容易實現(xiàn)條目按姓名排序存儲;二是通訊錄索引的構(gòu)建,用來保存通訊錄的概要信息,便于定位通訊錄條目鏈表的首尾,以及快速查找語音撥號項目。如下:
通訊錄條目數(shù)據(jù)結(jié)構(gòu):
Typedef struct STR-PB{
Unsigned int Flag-Del;
Unsigned char Mame[16];
Unsigned char Tel-1[16];
Unsigned char Tel-2[16];
Unsigned char Email[25];
Unsigned char Other[20];
Unsigned int VoiceIdx;
sruct STR-PB*PrdItem;
struct STR-P B*MextItem;
}PHOMEBOOK;
通訊錄索引數(shù)據(jù)結(jié)構(gòu)
Typedef struct STR-PBIDX{
Unsigned int ItemMum;
PHOMEBOOK*FirstItem;
PHOMEBOOK*Las tItem;
Unsigned int Voice-Mum;
PHOMEBOOK*Voice-PBAddr[PB-MAX-VOICE];
}PHO MEBOOK-IDX;
數(shù)據(jù)結(jié)構(gòu)以節(jié)點的方式編排在雙鏈表當中,每個數(shù)據(jù)節(jié)點都有兩個指針,分別指向直接前驅(qū)(對應上面的struct STR-P B*PreItem和PHOMEBOOK*FirstItem)和直接后繼(對應上面的struct STR-P B*MextItem和PHOMEBOOK*Las tItem),通訊錄條目數(shù)據(jù)結(jié)構(gòu)保存了相關聯(lián)系人的重要信息,而通訊錄索引數(shù)據(jù)結(jié)構(gòu)為快速地進行語音撥號提供方便的指引。
語音撥號是由語音識別函數(shù)庫實現(xiàn)。語音識別是一種多維模式識別系統(tǒng),可分為特定發(fā)音人識別和非特定發(fā)音人識別兩種[5]??紤]到特定發(fā)音人識別原理較為簡單,且識別率高,容易在單片機上實現(xiàn),故選擇前者。與非特定發(fā)音人識別不同的是,特定發(fā)音人識別必須先有一個“訓練”的過程,如圖3所示。在訓練階段,特定發(fā)音人對61單片機錄入一定語音,單片機對采集到的語音樣本進行分析和處理,從中提取出語音特征信息,建立一個語音特征模型。其次是識別階段,單片機仍然對采集到的語音樣本進行同樣的分析和處理,提取出語音的特征信息,然后將這個特征信息與已有的語音特征模型進行對比,如果二者達到了一定的匹配度,則輸入的語音被識別,反之,不能識別。
凌陽語音識別函數(shù)庫包含訓練、識別、語音特征模型的導入、導出等功能函數(shù)。
圖3 語音識別過程示意圖
語音撥號模塊由訓練和識別兩部分組成。訓練部分和識別部分的程序流程如下(如圖4,圖5所示):
本方案的軟件系統(tǒng)還包含下列模塊:
按鍵掃描:掃描4×4鍵盤,以逐行掃描方式,在TMB-12 8Hz中斷服務程序中進行,用于獲取鍵值。
SPLC501液晶模塊[6]:包括LCD顯示驅(qū)動和漢字顯示兩部分。驅(qū)動程序是為了方便液晶與SPCE061A的接口配置、基本的數(shù)據(jù)傳輸和提供數(shù)據(jù)處理子函數(shù)等,而漢字顯示則是在驅(qū)動程序的基礎上實現(xiàn)漢字的位圖顯示,當然也可實現(xiàn)圖形顯示功能,使用凌陽提供的DM Tool字模提取工具,可以進行文字取模和圖片取模。
SPR4096模塊[7]:存儲LCD顯示字庫和輸入法數(shù)據(jù),通過驅(qū)動程序進行讀取、擦除和寫入訪問。
內(nèi)部Flash擦寫模塊:用于存儲通訊錄條目、索引等,當對內(nèi)部數(shù)據(jù)修改時,以頁為單位進行擦除操作。
文字輸入模塊:通過4×4鍵盤輸入漢字(拼音輸入法)、字符、數(shù)字和英文等,并在LCD上顯示出來,以便于用戶編輯通訊錄條目和搜索條目。
上述功能模塊組成了單向調(diào)用結(jié)構(gòu),各模塊之間的相互關系如圖6所示。
圖4 語音訓練流程
圖5 語音識別流程
圖6 各模塊之間的調(diào)用關系
首先,使用Rewriter軟件向SPR4096模組燒寫漢字庫和輸入法數(shù)據(jù),注意模組需提供3V穩(wěn)壓電源,燒寫方式可選用在線調(diào)試器PROBE接口或者EZ-PROBE接口;其次,使用u'nSP集成開發(fā)環(huán)境IDE完成各模塊的編譯與綜合,生成工程文件,并下載到向SPCE061A芯片中,連接系統(tǒng)各模塊硬件;最后檢查無誤后,上電開機,系統(tǒng)運行后會相應地在SPLC501液晶上顯示操作菜單,使用4x4矩陣按鍵可方便地對菜單實行操作。
經(jīng)過多次的實驗調(diào)試和改進,本語音撥號通訊錄系統(tǒng)運行穩(wěn)定,能源損耗低,語音識別快速,準確率高,在嘈雜的環(huán)境中依然有比較好的識別效果。當然,理想的語音撥號效果需在語音訓練的過程中,注意以下三方面:
1)在語音訓練的過程中,需要把握聲音的強度,聲音過小,不易提取語音特征模型,聲音過大,則易導致失真;
2)語音訓練每次的時間限制在5秒內(nèi),超出則無法錄入,或記為下一次語音輸入,最好在訓練時的前后預留一段時間,有助于準確提取語音特征模型;
3)語音訓練需在安靜的環(huán)境中實行,并且兩次訓練聲音應大體一致,否則會出現(xiàn)語音訓練失敗。
圖7 實物調(diào)試和成品展示
基于凌陽SPCE061A單片機的強大處理能力,利用其豐富的庫函數(shù)[8],構(gòu)造出一個手機通訊錄模型,實現(xiàn)基本的通訊錄操作及語音撥號功能,如圖7所示。該系統(tǒng)菜單界面友好,操作簡單,可特定發(fā)音人語音識別,多次試驗證明其識別結(jié)果較好,雖然測試過程中發(fā)音人的語氣強弱和環(huán)境干擾會影響系統(tǒng)的靈敏度,但其依然具有較強的適應能力和穩(wěn)定性,并且特定人發(fā)音具有較強的保密性,能有效防止他人說話的干擾或者控制,這在未來將會有一定地應用前景。
[1] 沙占友,唱春來,李春明.語音處理技術及其應用[J].電子測量技術,2000(2):35-37.
[2] 陳海宴,呂江濤,李瑞.凌陽16位單片機經(jīng)典實戰(zhàn)[M].北京:北京航空航天大學出版社,2011.
[3] 車愛靜,文環(huán)明,張艷.基于凌陽SPCE061A單片機的語音控制系統(tǒng)[J].電腦開放與應用,2006,19(10):49-51.
[4] 王立柱.C/C++與數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學出版社,2003.
[5] 鄧中亮.韋志瑜.一種名片式手機通訊錄的存儲結(jié)構(gòu)設計[J].科技咨詢導報,2007(7):85.
[6] 凌陽大學計劃網(wǎng)站.SPLC501液晶模組產(chǎn)品說明[EB/OL].[2012-9-2]http://www.unsp.com.cn.
[7] 凌陽大學計劃網(wǎng)站.SPR模組產(chǎn)品說明[EB/OL].[2012-9-2]http://www.unsp.com.cn.
[8] 何欽銘,顏暉.C語言程序設計[M].北京:高等教育出版社,2007.
Design of a Voice Dialing Mobile Address Book
JIChun.long ZHONG Wei.jian LITian.shen ZHU Kuan.lu ZHANG Dong LIU Hua.zhu
(College of Electronic Engineering,Dongguan University of Technology,Dongguan 523808,China)
Based on 16-bitMCU,SPCE061A of Sunplus,a voice dialingmobile address book is designed,which includes SPLC501 LCD,SPR4096 memory and 4*4 keyboard.Input type and browse,add and search address book entry are realized,by the special voice recognition function of SPCE061A,address book entry can be also changed by voice dialing.
voice dialing;mobile phone;address book;SPCE061A;input method
TP368
A
1009-0312(2014)01-0012-05
2013-10-23
2012年度東莞理工學院大學生創(chuàng)新實驗項目(1181912014)。
紀春龍(1993—),男,廣東揭陽人,主要從事電子信息工程研究。