说明
最近在将Windows的系统转向国产系统银河麒麟中遇到了一个问题,在Windows可以使用TTS,但是银河麒麟就不能使用,所以从网上找到了两个解决方案,大家自行选择
英文版:espeak (也能使用中文,但是听上去像是老外在说中文,因此我这边只推荐英文使用它)
中文版:ekho (说中文比较能听懂,但是说英文很别扭,因此我推荐中文选择它)
因为银河麒麟内核和ubuntu相同,所以ubuntu也适用
安装
espeak
- 安装espeak
sudo apt install espeak
- 下载数据
git clone https://github.com/caixxiong/espeak-data/
- 进入目录
cd espeak-data/
- 解压包
unzip espeak-data.zip
- 进入目录
cd espeak-data/
- 拷贝文件到原始安装包路径
sudo cp -r * /usr/lib/x86_64-linux-gnu/espeak-data
- 编译包
sudo espeak --compile=zh
提示:如果要使用粤语,则继续编译:sudo espeak --compile=zhy
- 注意事项
编译成功后需要把原来下载的espeak-data内容全部删,不然可能报espeak -v zhy 你好 Can't read data file: '/home/loong/espeak-data/phontab' Failed to load espeak-data
rm -rf espeak-data
- 使用方法
espeak -v zh 你好
espeak -v hello
ekho
- 安装ekho
- 安装依赖
sudo apt-get install espeak-ng libespeak-ng-dev libsndfile1-dev libpulse-dev libncurses5-dev libestools-dev festival-dev libvorbis-dev libmp3lame-dev libdotconf-dev texinfo pulseaudio libpulse-ocaml-dev
- 解压包
tar -xvf ekho-8.6.tar.xz
- 进入目录
cd ekho-8.6
- 编译配置
ps:如果执行make有关于报错g++的需要下载g++,如果没有则继续执行
./configure
make -j4
sudo make install
- 测试
ekho "你好啊"
- 命令行选项
选 项 | 值 | 说明 |
---|---|---|
语言 | -v | (‘Cantonese’, ‘Mandarin’, ‘Hakka’, ‘Tibetan’, ‘Ngangien’ and ‘Hangul’) 默认普通话(Cantonese) |
导入文件 | -f | 路径,输出文件里面的内容 |
输出文件 | -o | 路径,将文字输出到文件中,默认wav |
音量高低 | -p | 最小-100 最大100 |
增量速率(这将同时缩放俯仰和速度) | -f | 最小-50 最大100 |
启动服务器 | -f | 启动Ekho TTS服务器。 |
向Ekho TTS服务器发送请求 | –request=TEXT | 向Ekho TTS服务器发送请求。 |
代码调用
上面使用的都是命令行的方法,其实我们使用自己用的编程语言调用很简单,也是使用代码调用命令行的方式来唤起TTS语音。
例如我使用的是C#
// 使用ekho
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = rootCommand,
Arguments = "ekho -a 30 - s 20",
UseShellExecute = false,
RedirectStandardOutput = false,
CreateNoWindow = true
};
using (Process process = Process.Start(startInfo)!)
{
process.WaitForExit();
}
总结
可以根据自己的需求选择使用的方法,灵活变通,每个TTS都有自己的可变性,以及各个配置选项。