天天看點

Linux聲音解決方案與TTS引擎

一、ALSA+Pulseaudio在嵌入式Linux中的聲音解決方案 

Linux音頻系統比較複雜,各層間有很多交叉,可能是最無序的子系統,并且它有兩套音頻驅動架構: OSS (Open Sound System)和ALSA (Advanced Linux Sound Architechture),是以底層驅動有OSS和ALSA兩套API。

  ALSA經過多年的發展,基本統一了Linux聲霸卡硬體驅動層的借口,OSS日漸退出,但是在ALSA之上的各個應用層,方案和軟體繁多複雜,ESD,PulseAudio, JACK,GStreamer, 這些系統元件各個為戰,實作了不同的功能。ALSA與Pulseaudio的組合,是嵌入式Linux聲音解決方案的常見組合。

  PulseAudio是一個聲音伺服器,簡單說,軟體要發聲就先發消息給聲音伺服器,然後聲音伺服器經過處理(主要是多條音頻流的混音),然後發給驅動控制聲音裝置發出聲音。Pulseaudio具有良好的可移植性,可以在多個作業系統中運作,包括其他的POSIX平台和微軟的Windows。

二、TTS引擎簡介

TTS(Text To Speech,文本轉語音)是語音合成應用的一種,它将儲存于電腦中的檔案,如幫助檔案或者網頁,轉換成自然語音輸出。TTS可以幫助有視覺障礙的人閱讀計算機上的資訊,或者隻是簡單的用來增加文本文檔的可讀性。TTS經常與聲音識别程式一起使用。

常用TTS引擎介紹

1.Ekho

  ekho是國産軟體,現在到7.7.1版本,一個免費、開源的中文語音合成軟體。它目前支援粵語、國語(國語)、诏安客語、藏語、雅言(中國古代通用語)和韓語(試驗中),英文則通過 eSpeak或者Festival間接實作。Ekho支援Linux、Windows和Android平台。

2. eSpeak

  是一個小型的、開放源碼的語音合成系統,支援多種語言。eSpeak可以将文本轉換成音素代碼,是以它也可以用于另一個語音合成引擎的前端。

3. Festival

  Festival提供了一個通用的架構,基于c++編寫的,可用于建構語音合成系統,該系統包含了各種子產品示例。它提供了完整的文本轉語音的API,原生支援Mac OS,支援的語言包括英語和西班牙語。

4. SpeakRight

  SpeakRight 是一個 Java 架構,用于編寫語音識别應用,基于 VoiceXML 技術。使用 StringTemplate 模闆引擎自動生成 VoiceXML 文檔。

5. FreeTTS

  FreeTTS 是完全采用 Java 開發的語音合成系統,它是卡内基梅隆大學基于 Flite 這個小型的語音合成引擎開發的。

6.Festvox

   Festvox項目建構了一個更加系統化、全新的語音合成功能。Festvox是大部分語音合成庫的基礎。

7.Mary

  MARY是一個采用Java開發的、多語種的文本轉語音平台,它支援:德語、英語、美式英語、泰盧固語、土耳其語和俄語。

8. Flite

  Flite是一個小型、快速的TTS系統,是著名的語音合成系統festival的C版本,可用于嵌入式系統。

三、pulseaudio在嵌入式系統上

1.在Linux下的典型方案,使用者提供配置ALSA來使用PulseAudio提供的虛拟裝置。盡管應用使用ALSA會将輸出的聲音輸出到PulseAudio,然後PulseAudio會使用ALSA它自己來通路真正的聲霸卡. PulseAudio同樣提供它自己的接口給應用程式,用來直接支援PulseAudio,就像那些遺留的基于ESD的軟體,這樣使得PulseAudio适合作為ESD的替代品。

2.Pulseaudio與ekho的關系

  ekho通過pulseaudio提供的接口發聲,如果系統沒有pulseaudio支援,ekho隻能将文字轉換為音頻檔案。

3.Pulseaudio在嵌入式系統上的缺點

a.Pulseaudio本身不能在root模式下運作

b.Pulseaudio如果想在root模式下運作,需要使用system模式

c.在system模式下運作時,出于安全考慮會禁止加載子產品并且禁用共享記憶體資料傳輸,這意味着:系統模式下更高的記憶體使用率和CPU負載

四、pulseaudio工作原理圖

Linux聲音解決方案與TTS引擎

繼續閱讀