type
status
date
slug
summary
tags
category
icon
password
主要是针对设备需要安装语音引擎但是又不通外网的情况,谷歌tts引擎安装后如果要使用中文是需要有外网下载语音包的。
📝 提取语音包
1、获取语音包资源
找一台能正常使用语音合成的设备,通过adb命令进行连接。
进入shell,找到当前设备已经下载的语音包文件
检查目录内容:
一般来说谷歌语音引擎自动下载语音包完成后,会保存至上述三个路径中的某一个,所以需要依次执行,查看对应文件夹下的文件进行确认。
如果某次执行出现如下所示:
恭喜你,你已经找到语音包下载文件的保存目录了。
在
cmn-cn-x-ssa
文件夹里,有三个文件夹/文件:hmm
:这可能是语音模型的文件夹,包含了语音合成的音频特征模型。🔊
lstm
:这通常是深度学习模型,可能用来进行语言模型的预测。🤖
voice_metadata
:这个文件一般会包含关于语音的元数据,比如语音的配置、名字、描述等。📝
这些都是谷歌TTS引擎所需要的语音资源。通常情况下,如果你想备份这个语音包并在没有外网的设备上使用,应该将整个
cmn-cn-x-ssa
文件夹备份下来。
2、采用备份的方式提取文件
可以使用以下命令将整个
cmn-cn-x-ssa
文件夹拉取到你的电脑上:
确保目标路径
F:/voiceFile/
存在,并且命令执行时可以正确访问,同时保证目标文件夹不包含中文字符,否则会报错。💻
如果命令行反馈如下: 说明资源文件已经成功提取到本地电脑,此时对应文件夹应该是能看到资源文件了。

📝 推送到其他设备
这里的其他设备指的是已经安装引擎,但是需要在内网环境使用的安卓设备。
1、adb连接设备
可以看到此时安装引擎之后,连播放示例都不行:

2、将本地电脑的语音资源推送到语音不可用的设备
使用
adb push
命令。这与 adb pull
相反,adb push
是把文件从你的电脑上传到安卓设备。📱基本命令格式:
举个例子:
假设你想把
F:/voiceFile/cmn-cn-x-ssa/
目录下的文件推送到安卓设备的 /data/data/com.google.android.tts/
目录下,命令如下:注意事项:
- 目标路径的权限问题:
设备上的很多系统目录(如
/data/data/
)是需要 root 权限才能进行写入的。没有 root 权限时,你可能会看到类似 "Permission denied" 的错误。解决办法是: - 如果设备已经 root,先使用
adb root
重新获取 root 权限。 - 如果没有 root 权限,可以考虑将文件推送到设备的可写目录,如
/sdcard/
或/storage/emulated/0/
目录。
- 确保目标路径存在: 推送之前,检查设备上目标路径是否存在。如果不存在,可能会导致推送失败。
如果目标路径不存在,你可以先创建目录,命令如下:
- 注意文件大小: 如果你要推送的文件非常大,推送时间可能会比较长,确保设备和电脑的连接稳定。
- 文件权限:
推送后,如果需要调整文件权限(例如修改可执行权限),可以使用
adb shell chmod
命令来修改:
上手操作:将语音包推送到设备:
我们要将
F:/voiceFile/cmn-cn-x-ssa/
中的文件推送到 /data/data/com.google.android.tts/app_voices_greco_v2/
: 如果提示权限问题,且你已经获得 root 权限,可以尝试以下命令:
- 作者:JavaScript大王
- 链接:http://peanut.icu/article/voice_file
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。