語音識別及語音編解碼技術經過幾十年的發展,已經日趨成熟,步入實用化階段。語音識別技術已開始應用于電話查詢服務、智能玩具、PDA、家用電器、通信、工業控制、語言學習等應用領域;其于碼激勵線性預測(CELP)技術的語音編解碼算法也因其音質好,壓縮比大而在通信和數字錄音設備中獲得了廣泛應用。 語音輸入方式與手寫輸入方式相比,具有操作簡便、查找方便、識別準確率高等優點。省去了大量的輸入時間,降低了信息檢索的復雜度。本文所介紹的聲控電子記事本系統將語音識別和語音編解碼在同一片DSP芯片上實現,用語音方式代替其它方式進行信息輸入,提高了系統的靈活性。 1 系統功能 可存200張語音名片,每張語音名片包含四條信息:姓名、電話號碼、工作單位、備注;聲控查找語音名片信息,用戶只需口述所要查找人的姓名,即可獲得電話號碼、工作單位、備注等信息,同時電話號碼顯示在液晶顯示屏上。 具有雙音多頻(DTMF)撥號功能,用戶用聲控查找到電話號碼并顯示在液晶屏上之后,只需輕觸一個撥號鍵,即可通過普通電話機的話筒實現快速自動撥號。 數字錄音,每段錄音加語音標識;聲控放音,在放音時只需口述所要語音段的語音標識即可自動找到該段錄音并加放,累計錄音時間達兩個半小時以上。 具有方便的編輯功能,增加、刪除語音名片,增加、刪除數字錄音段。 2 系統構成 本文所介紹的聲控電子記事本系統,是在定點16位DSP芯片上實現的,它包含特定人孤立詞語音識別算法和代數碼本激勵線性預測(ACELP)語音編解碼算法數(MFCC)為語音特征、以動態時間規劃(DTW)為模板匹配算法,對于普通詞條,識別率達到了99%以上。用于“錄音”功能的ACELP算法是該碼率下性能優異的編解碼算法,雖然算法復雜度較高,但共重建語音質量的平均主觀評測分數(MOS分)達到了4.0,非常接近于壓縮前的分數4.3。 如圖1所示,系統由MCU實現總線控制,接受外部鍵盤輸入,并在液晶屏上顯示信息。在本系統中,語音充當大部分人機界面的角色,盡量省去復雜的鍵盤操作,而且用語音提示或語音回放代替一部門液晶文字提示。由于語音要經過DSP處理,所以MCU需要與DSP經常交換信息,以便實現友好的操作界面。 2.1 DSP DSP(ADSP2185)是整個硬件系統的信號處理中心,完成語音識別、訓練、編解碼,進行片內RAM及外部FLASH存儲芯片的數據管理與調度,并向主控芯片MCU提供簡潔的命令與反饋信息。ADSP2185是Analog Devices公司的產品,其主要性能如下: 運算速度為50MIPS,且均為高效的單周期指令。 提供了80Kbyte的片內RAM,其中32Kbyte為數據RAM,48Kbyte為程序RAM。 最大可支持4Mbyte的外部存儲區,用于存儲數據或程序。 提供對字節存儲區(BM)與片內RAM區之間的DMA方式支持。 提供兩上可編程、全雙工、自動進行收發緩沖區操作的串行口。 2.2 MCU MCU(KS57C2316)是SAMSUNG公司生產的性價比較高的一種CMOS四位單片機,可以一次性編程,適于小批量生產,被廣泛地應用于家用電器的控制,它具有強大的I/O功能。其主要性能如下: ROM為16K;8 bit; RAM為512;4 bit 40個I/O引腳 多至16位數字LCD顯示 ——32個段,4個公共端引腳 這些性能保證了系統主控能力,而且能夠提供靈活的外部接口,適于做進一步的改進和改造。計算器等附加功能可以直接由MCU完成。 2.3 數據FLASH存儲器 數據FLASH存儲器KM29U64000是SAMSUNG公司的產品,它可在3伏電壓下低功耗工作,存貯量大、價位低、速度快、存儲數據掉電后可保持而不會丟失。其主要性能指標如下: 存儲單元陣列為(8M+256K;8bit; 數據寄存器(512+16;8bit ; 頁寫入為(512+16)Byte; 塊擦除為(8K+256)Byte ; 命令/地址/數據復用I/O端口; 可靠的CMOS Floating-Gate技術,耐受一百萬次寫入/擦除,數據維持時間為10年,命令寄存器操作 2.4 其它器件 本系統還采用了Analog Devices公司的Codec(A/D、D/A變換器)AD73311L,SST的FLASH存儲器SST29LE010(128K%26;#215;8bit)存儲DSP程序及運算數據。 3 系統內主要芯片的互連互控 3.1 MCU與DSP MCU與DSP采用串行口相連,傳送MCU對DSP的命令字與DSP對于MCU的反饋字。DSP串口1用于語音輸入和輸出,串口2用于與MCU相連。由于DSP的串口收發方式與MCU的串口不一致,所以MCU用I/O口模擬串口與DSP相連。為了保證數據傳送的穩定性,MCU采用中斷方式接收。每次數據傳送一般不止一個字節,所以采用打包方式傳送。 3.2 DSP與數據FLASH存儲器 DSP與數據存儲器的接口如圖2所示。DSP的數據總線中的8位連到FLASH存儲器的總線上;用DSP的讀寫控制線WR和RD控制FLASH芯片的讀寫;用DSP的I/O口FL0控制FLASH存貯器的CE(片選)端,以保證DSP在進行其它總線操作時不會對該FLASH芯片產生誤操作;用DSP的另一個I/O口PF3連到FLASH芯片的“忙/閑”信號線上,監視其工作狀態;分別把兩個地址線A8和A9連到FLASH芯片的兩個鎖存控制CLE和ALE上,以便控制總線的狀態。 3.3 DSP與程序FLASH存儲器 ADSP2185的Byte存儲區是一個8位寬的外部雙向存儲空間,可用于存儲程序與數據。整個Byte存儲區的4Mbyte的存儲空間由256個16K%26;#215;8的頁面組成。Byte存儲區只能通過BDMA方式進行訪問。在使用BDMA方式工作時用A0~A13作為低端地址,用D16~D18作為擴展的高端地址,聯合使用實現4Mbyte的外部尋址能力。D8~D15作為數據總線,BMS、RD、WR分別用于控制存儲器的片選以及讀寫操作信號。DSP與程序FLASH存儲器的接口如圖3所示。 值得提出的是,ADSP2185的開發系統提供了“重載”功能的支持。其基本思路是,當片內RAM(程序RAM或數據RAM)不夠用時,可以由主程序將所需子程序動態調入。子程序在程序FLASH存貯器中,在需要運行時才將其調入DSP的RAM區。這樣就相當于用軟件調入方法擴大了DSP的RAM區。這一性能為本系統的設計提供了方便,這是因為語音識別和編解碼程序都較長,不可能同時裝入DSP的RAM區。因此,系統軟件設計中必須利用這一點進行程序動態輸入。 4 系統軟件設計 本系統采用動態程序調入的辦法擴充可利用硬件資源,在一個芯片上實現了幾個復雜算法的協同工作;在程序結構上,采用了C語言和匯編語言混合編程,充分利用了DSP的運算速度,并兼顧了程序的靈活性;軟件系統采用清晰的層次結構和明確的模塊劃分,便于局部修改和升級;系統還根據不同功能所規定的各種參數的組合和從屬關系精心設計了存儲器的數據存儲結構,并將數據存儲、刪除、查找等程序模塊做了合理的封裝,供上層程序調用。 4.1 系統軟件模塊的構成 系統的軟件設計包含MCU軟件設計和DSP軟件設計兩部分。MCU軟件主要是時鐘日歷、電源監測控制、科學計算、鍵盤掃描、LCD顯示驅動、與DSP通信等程序,如圖4所示。 DSP的軟件,主要包含五大功能模塊:系統基本IO、FALSH管理、語音、G.723.1編碼、G.723譯碼,如圖5所示。分為6層,上面3層是C語言編寫,用以增強程序的靈活性;下面3層用匯編語言編寫,主要是算法、系統設置和外圍器件控制。 5 應用前景 我們研制成功的聲控電子記事本系統,是未來SPDA(Speech Personal Digital Assistant:語音個人數字助理)的雛型。它集成了語音識別、語音壓縮編解碼、語音信號處理器DSP和大容量FLASH存儲器的數據管理等技術,該系統所運用的技術可應用于語音撥號電話機、語音撥號+語音錄音電話機、電話機伴侶(語音撥號、報號、答錄)、PDA、隨聲聽、語音玩具、聲紋鎖、語音門戶等。 |