2个版本
| 0.0.2 | 2023年10月28日 |
|---|---|
| 0.0.1 | 2023年10月25日 |
#562 in 音频
210KB
149 行
fry
一个非常简单、愚蠢、无分配、无std的TTS。它有一些极端的限制
- 它可能只能处理固定大小的缓冲区(一次最多32个字符)的文本。
- 它只拼写字符串,实际上并不发音。
- 它使用
espeak生成声音文件,并使用sox修改输出以固定长度。 - 它没有输出能力。用户必须知道将此数据存储在哪里。
- 产生的音频仅为16位有符号PCM,单通道。
名称来自术语“vocal fry”。
构建新文件
如果您想为库生成新文件(例如,要更改说话速度),则可以使用data中的脚本创建新文件。请注意,您必须手动更新脚本和库中的变量,以适应对数据文件所做的任何更改。
generate_base.sh
此脚本使用espeak和英文字母字符列表创建新文件,以生成[a-z].wav您可以通过-s标志修改espeak的参数,以通过“每分钟单词数”设置产生更快的声音。
有关更多详细信息,请参阅man espeak或man espeak-ng。
calc.py
此Python文件使用sox命令和一些基本数学来计算输出,以便在WAV文件中添加0填充,使所有文件长度完全相同(以字节和时间计)。然后,剥离头文件,以便WAV数据只是简单的原始PCM数据。用户可以决定如何使用此数据。
如果mediainfo显示与[a-z].wav不同的信息,则您可能需要更改calc.py中的常量设置,以生成正确尺寸的填充/原始文件。
待办事项
- 添加一些测试以验证位模式确实被正确连接。
- 简化每个字母的
.wav文件的构建过程。 - 消除构建
.wav文件的非 Rust 依赖。-
sox(calc.py) -
python(calc.py) -
espeak(generate-base.sh) -
bash(generate-base.sh)
-
- 实际上使用语音合成引擎,而不是手动逐字输入拼写。
- 当它们对消费者可用时,添加
std和alloc功能。 - 添加编译时或测试时的测试,以确保以下内容与
lib.rs文件中的某些常量相匹配- 验证位排列(小端,大端)
- 验证通道数(单声道,立体声)
- 验证采样率(22050,41000等)
- 验证PCM宽度(s16,u16,s32,s8等)
- 将原始数据包装在
PCM类型中,因为否则测试输出会非常大,泛型覆盖- 位排列(小端,大端)
- 通道数(单声道,立体声)
- 采样率(22050,41000等)
- PCM宽度(s16,u16,s32,s8等)