Crate rs_voice_toolkit_tts

Crate rs_voice_toolkit_tts 

Source
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§

IndexTtsEngine
Index-TTS 引擎
TtsConfig
TTS配置
TtsService
TTS服务

Enums§

TtsEngineType
TTS引擎类型
TtsError
TTS模块的错误类型

Traits§

TtsEngine
TTS引擎接口