Expand description
§TTS (Text-to-Speech) Module - 文本转语音模块
这个模块提供了高质量的文本转语音功能,支持多种 TTS 引擎和灵活的配置选项。
§主要功能
§核心特性
- 多引擎支持: 支持 Index-TTS、Piper、Coqui 等多种 TTS 引擎
- 灵活配置: 支持语言、说话人、采样率、速度、音调等参数配置
- 多种输出: 支持内存输出和文件输出两种方式
- 高质量语音: 基于 Index-TTS 引擎提供自然流畅的语音合成
- 异步处理: 完全异步的 API 设计,适合高并发场景
- 可扩展架构: 易于添加新的 TTS 引擎支持
§支持的语言和说话人
- 中文: 支持标准中文语音合成
- 英文: 支持标准英文语音合成
- 自动检测: 根据文本内容自动选择语言
- 多说话人: 支持不同说话人声音(取决于引擎支持)
§音频输出格式
- WAV: 标准 WAV 格式输出
- 采样率: 支持 8kHz - 48kHz 采样率
- 位深度: 16-bit PCM
- 声道: 单声道/立体声(取决于引擎支持)
§快速开始
§基本语音合成
use rs_voice_toolkit_tts::{TtsService, TtsConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建默认配置
let config = TtsConfig::default();
let service = TtsService::new(config);
// 检查引擎可用性
if !service.is_available().await {
println!("TTS 引擎不可用,请检查安装");
return Ok(());
}
// 文本转语音(输出到文件)
let text = "你好,世界!欢迎使用语音工具库。";
let output_path = "output/hello.wav";
service.text_to_file(text, output_path).await?;
println!("语音合成完成: {}", output_path);
Ok(())
}§自定义配置语音合成
use rs_voice_toolkit_tts::{TtsService, TtsConfig, TtsEngineType};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 自定义配置
let config = TtsConfig {
language: Some("zh".to_string()), // 中文
speaker: Some("female".to_string()), // 女声
sample_rate: 22050, // 采样率
speed: 1.2, // 语速稍快
pitch: 0.0, // 正常音调
executable_path: None, // 使用系统 PATH
};
let service = TtsService::new(config);
// 文本转语音(输出到内存)
let text = "这是一段使用自定义配置生成的语音。";
let audio_data = service.text_to_speech(text).await?;
println!("生成音频数据大小: {} 字节", audio_data.len());
// 保存到文件
std::fs::write("output/custom.wav", audio_data)?;
Ok(())
}§批量语音合成
use rs_voice_toolkit_tts::{TtsService, TtsConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let service = TtsService::new(TtsConfig::default());
// 批量合成多个文本
let texts = vec![
"这是第一段文本。",
"这是第二段文本。",
"这是第三段文本。",
];
for (i, text) in texts.iter().enumerate() {
let output_path = format!("output/speech_{}.wav", i + 1);
match service.text_to_file(text, &output_path).await {
Ok(_) => println!("✓ {}: {}", i + 1, output_path),
Err(e) => println!("✗ {}: {} - {}", i + 1, text, e),
}
}
Ok(())
}§引擎选择指南
§Index-TTS 引擎(默认)
- 特点: 高质量、多语言支持、配置灵活
- 适用场景: 通用语音合成、多语言应用
- 安装: 需要安装 index-tts 可执行文件
§Piper 引擎(计划中)
- 特点: 轻量级、离线运行、多说话人支持
- 适用场景: 嵌入式设备、离线应用
- 状态: 计划中功能
§Coqui 引擎(计划中)
- 特点: 高质量、可训练、多语言
- 适用场景: 专业语音合成、定制化需求
- 状态: 计划中功能
§配置参数说明
§基本配置
- language: 语言设置(“zh”, “en”, “auto”)
- speaker: 说话人选择(引擎相关)
- sample_rate: 采样率(8000-48000 Hz)
§语音效果调整
- speed: 语速控制(0.5-2.0,1.0为正常)
- pitch: 音调调整(-20.0到20.0,0.0为正常)
§引擎配置
- executable_path: 引擎可执行文件路径
§性能优化
§引擎优化
- 保持服务实例: 避免重复创建 TtsService 实例
- 批量处理: 使用批量合成减少初始化开销
- 异步并发: 利用异步特性进行并发处理
§系统资源优化
- 内存管理: 及时释放大型音频数据
- 磁盘空间: 合理管理生成的音频文件
- CPU 使用: 监控合成过程中的 CPU 使用率
§音频质量优化
- 采样率选择: 根据应用场景选择合适的采样率
- 语速调整: 避免过快的语速影响可懂度
- 音调调整: 适度调整音调避免不自然
§错误处理
模块提供了详细的错误类型,帮助快速定位问题:
use rs_voice_toolkit_tts::{TtsService, TtsConfig, TtsError};
let service = TtsService::new(TtsConfig::default());
match service.text_to_speech("测试文本").await {
Ok(audio_data) => println!("合成成功,音频大小: {} 字节", audio_data.len()),
Err(TtsError::NotImplemented) => println!("功能尚未实现"),
Err(TtsError::ConfigError(msg)) => println!("配置错误: {}", msg),
Err(TtsError::AudioGenerationError(msg)) => println!("音频生成错误: {}", msg),
Err(TtsError::EngineExecutionError(msg)) => println!("引擎执行错误: {}", msg),
Err(e) => println!("其他错误: {}", e),
}§系统要求
§Index-TTS 引擎要求
- 内存: ~100MB 运行内存
- CPU: 支持多线程处理
- 磁盘: 引擎安装空间 ~50MB
- 依赖: index-tts 可执行文件
§系统兼容性
- Linux: 完全支持
- macOS: 完全支持
- Windows: 基本支持(取决于引擎)
§注意事项
- 首次使用前需要安装相应的 TTS 引擎
- 建议在使用前验证引擎可用性
- 长文本建议分段处理以避免内存问题
- 实时应用建议使用较小的采样率以减少延迟
- 生成的音频文件需要注意版权问题
Structs§
- Index
TtsEngine - Index-TTS 引擎
- TtsConfig
- TTS配置
- TtsService
- TTS服务
Enums§
- TtsEngine
Type - TTS引擎类型
- TtsError
- TTS模块的错误类型
Traits§
- TtsEngine
- TTS引擎接口