語音合成晶元

採用語音數據壓縮等技術的晶元

所謂語音合成晶元,又稱中文TTS晶元,是指一種專業的語音晶元,它可以通過串列通信介面如UART和SPI等方式,與主控CPU進行數據通信,接收CPU傳送的文本信息,以合成語音的方式,驅動發聲器發聲,其特點是:高集成度,帶串列通信介面以及需要一定的外圍電路的支持(如晶振電路等)。

產生背景


伴隨著各種家用電器設備,車載設備的功能增加,設備的操控性越來越複雜;人機交互設計在系統設計中的地位越來越重要。受到系統成本、體積等多方面的限制,應用開發人員可以選擇的人機交互設計方法並不多。利用語音合成晶元來增強人機交互性能的方法又重新開始受到應用開發人員的重視。
語音合成晶元的核心技術是語音數據壓縮。這項技術在二戰前就開始被研究,但其轉化為晶元並被實際產品採用卻是在70年代末。由於受到存儲器容量的限制,當時比較流行的是參數合成方式,這是一種模擬人體發聲器官,建立數學模型,並以此作為參數進行壓縮合成的方法。但是這種方法的實際使用效果並不能滿足人們的要求,最終在市場上受到認可的是基於ADPCM(Adaptive differential PCM)技術的語音壓縮合成方式。
OKI公司從70年代就從事ADPCM的研究開發工作,並不斷進行改進,相繼推出了具有更大壓縮率和更高音質的OKI ADPCM、OKI ADPCM2方式。OKI語音晶元完美的音質,優秀的性能得到了客戶的認可,25年的累計出貨量達到了4億個。高音質語音合成晶元增強人機交互性能 在使用語音合成晶元時,最令應用開發人員頭痛的問題是如何在有限的存儲器當中,放入更多的語音數據。通常的做法是將播放內容中重複出現的地方進行切割,在需要利用的時候,對這些重複內容進行復用。雖然這個做法可以解決問題,但一般在使用當中,如果有大量需要復用的語音段出現時,將會使播放控制程序非常冗長。而且在不同的地方進行復用時,音調、語速等都會有微妙變化,這些變化如果不加以區分處理,就會在播放時造成不自然和失真。因此在播放不同內容時需要適當加入不同的延時。比如在實現圖1的播放內容時,一般需要程序寫成如下形式。 Play(Address1); Delay(xxx); Play(Address2); Delay(xxx); Play(Address4); Delay(xxx); Play(Address5); 這種實現方法無疑是對程序存儲器的一種極大浪費。而且由於在播放指令發出時,MCU必須對相應的控制線或者IO進行操作,指令的反覆使用也是對CPU資源的浪費。更糟糕的是在播放指令執行過程當中,一旦有中斷等意外發生的話,很容易出現播放異常現象。

播放方法


語音合成晶元
語音合成晶元
基於分割播放的一般方法。 OKI的語音晶元為了使控制MCU的開銷最小,在語音晶元產品中加入了ROM Edit功能,通過在製作語音數據時,指定需要復用和延時的部分,把絕大部分處理工作交給語音合成晶元來完成,大幅度降低控制MCU的開銷。例如使用OKI的ROM Edit功能播放圖示的兩段內容時,可以使用下述程序: Play(ROM Edit area1); Play(ROM Edit area2); 語音晶元接受到這兩條指令后,將自行按照ROM Edit領域的指定,自動將相應地址的語音數據進行播放連接,這些過程將無須MCU參與。由於ROM Edit領域中使用的僅僅只是地址信息,所以對於存儲器的佔用率是相當低的。當然在ROM Edit領域指定存儲器地址的同時,也可以插入相應的延時信息,由晶元自行完成播放之間的延時處理。簡單應對多國語言產品開發 如何將同樣的核心設計適用到不同地區的市場,是很多設備生產廠商都要考慮的問題。對於使用語音晶元作為人機交互手段的產品來說,首要面臨的問題就是如何設計多國語言的版本。到目前為止,當提示語言改變時,將不可避免地造成控制軟體的修改,而且針對不同語言的產品必須準備不同版本的語音晶元,給庫存和管理都造成壓力。OKI的語音產品通過存儲器的庫切換功能,輕鬆實現了在同一塊晶元上整合不同語言版本的功能。圖示為在同一塊晶元中存入了中英文兩種語言信息。各種語言信息所對應的事件都是一樣的,使用完全一樣的控制軟體。在設計不同語言的產品時,只需要簡單地將SEL0,SEL1的設置進行相應切換,就可以輕鬆實現同一個設計的中英文版本。OKI的語音晶元最多可以劃分為4個庫,也就是說使用同一塊晶元可以實現4個語種的播放。
語音合成晶元
語音合成晶元
基於ROM Edit功能的分割播放。先進的存儲器方式 語音晶元的應用開發人員面臨的一個棘手問題是如何決定在開發測試階段和規模量產階段進行切換。語音數據需要進行較長時間音質評估和適用性測試,這個過程一般都是使用Flash或者OTP(One-timeーprogramming)方式的存儲器,以便快速對語音數據進行評估。一旦評估結束后,在量產產品中一般都傾向於使用性價比更高的MaskROM存儲器。但是MaskROM的漫長生產周期,起訂數量的限制和不便宜的掩膜費用都加重了開發人員的壓力,客戶要求的頻繁變更更是雪上加霜。以至於很多應用設計直接將Flash或者OTP方式的語音晶元應用到了量產產品中,而這樣又對量產的效率和品質管理直接造成了影響。為了更好地平衡語音晶元評估階段的方便快捷和量產階段高品質的大量廉價生產,OKI的語音晶元採用了OKI獨自的P2ROM(Production programmed ROM)存儲器。這種獨特的存儲器不同於MaskROM需要在晶元生產的前端工藝流程中進行寫入操作,可以在晶元的封裝測試階段進行數據寫入操作。因此晶元生產廠可以事先準備不同容量的空白晶元,等待客戶的數據定好后,在晶元的封裝測試階段進行寫入操作。由於不需要經過前端工藝漫長的生產流程,工廠可以在極短的時間內(7-10天)完成數據的寫入測試和出貨,大大縮短了交貨時間。而且極低的起訂數量和零寫入費用對於開發工程師來說更是極具吸引力。對於生產管理部門而言,P2ROM極短的交貨期,優秀的量產應對能力,以及工廠到工廠的點對點方式,減少了庫存,降低了生產成本,減少了貼片前的測試流程,大大提高了生產效率。OKI使用P2ROM 存儲器的語音晶元直接覆蓋了開發、試產、量產的全部階段。設計工程師再也不用發愁如何應對客戶規格的突然變更和量產成本之間的矛盾了。方便快捷的語音數據開發工具 語音晶元的應用開發人員面臨的另外一個棘手的問題就是如何準備語音數據。通常語音數據的製作都需要聘請專門的播音員,租用專用的錄音棚進行錄音。不但費用高,而且費時費力。有些開發商為了省事,乾脆使用PC機加麥克風進行錄音,導致各種討厭的背景噪音和語音晶元如影隨形。這些問題都直接或間接地限制了語音晶元的應用。 OKI最新開發了利用TTS(Text to Speech)技術的語音數據生成工具“隨心錄”。自然流暢的中、英、韓、日等多國語言的語音數據合成引擎,大大方便了語音晶元的應用開發人員,實現了“芯”隨字動。使用OKI的專用工具可以完成從語音數據的生成、波形編輯、ROM編輯、測試、燒寫、聲音評估等一連串的工作。大幅縮短了開發周期,節約了開發成本。彈指間完成語音數據準備的日子已經來到,應用開發工程師可以將自己的更多才智和時間放在更有創造性、更具靈動性的設計開發工作上。
利用存儲器切換功能實現多語種播放。本文小結 為了獲得更好的用戶體驗,通用化設計(Universal design)已經開始在以家電,遊戲機,車載設備等為主的領域生根發展。作為通用化設計的一個側面,利用語音交互的人機介面設計今後會變得越來越普遍。OKI的語音合成晶元在各個方面都已經做好準備,可以方便快速地應用到不同的設計領域中。