天天看点

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引擎

继续阅读