Expand description
§Voice Toolkit - Rust 语音处理工具库
voice-toolkit
是一个功能强大的 Rust 语音处理工具库,提供统一的接口来处理语音转文本(STT)、
文本转语音(TTS)和音频处理任务。该库基于 Whisper 模型提供高质量的语音识别功能,
支持多种音频格式转换和实时语音处理。
§主要特性
- 语音转文本 (STT): 基于 OpenAI Whisper 模型的高质量语音识别
- 文本转语音 (TTS): 基于 Index-TTS 的语音合成功能
- 音频处理: 支持多种音频格式的转换和处理
- 实时流式处理: 支持实时音频流的转录
- 语音活动检测 (VAD): 智能检测语音片段,提高处理效率
- 跨平台支持: 支持 Windows、macOS 和 Linux
- GPU 加速: 可选的 CUDA、Vulkan 和 Metal 加速支持
§快速开始
§基本依赖
在 Cargo.toml
中添加依赖:
[dependencies]
voice-toolkit = { version = "0.15.0", features = ["stt", "tts", "audio"] }
§语音转文本示例
use voice_toolkit::transcribe_file_unified;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let model_path = "models/ggml-base.bin";
let audio_path = "audio/hello.wav";
let result = transcribe_file_unified(model_path, audio_path).await?;
println!("转录结果: {}", result.text);
Ok(())
}
§音频格式转换示例
use voice_toolkit::audio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let input_path = "audio/input.mp3";
let output_path = "audio/output.wav";
// 将 MP3 转换为 Whisper 兼容的 WAV 格式
audio::convert_to_whisper_format(input_path, output_path).await?;
println!("转换完成: {}", output_path);
Ok(())
}
§文本转语音示例
use voice_toolkit::tts;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let text = "你好,世界!欢迎使用语音工具库。";
let output_path = "output/hello.wav";
// 使用 Index-TTS 生成语音
tts::synthesize_text(text, output_path, None).await?;
println!("语音合成完成: {}", output_path);
Ok(())
}
§功能特性
§STT 功能
- 支持多种音频格式:WAV、MP3、FLAC、M4A、OGG 等
- 自动音频格式转换和预处理
- 支持实时流式转录
- 集成语音活动检测 (VAD)
- 性能监控和基准测试
§TTS 功能
- 基于 Index-TTS 的高质量语音合成
- 支持多种输出格式
- 可扩展的引擎架构
§音频处理功能
- 音频格式转换
- 音频重采样
- 元数据提取
- Whisper 兼容格式转换
§特性标志
该库使用特性标志来控制功能模块的启用:
stt
: 启用语音转文本功能(默认启用)tts
: 启用文本转语音功能audio
: 启用音频处理功能(默认启用)streaming
: 启用实时流式处理(需要stt
)cuda
: 启用 CUDA GPU 加速(需要stt
)vulkan
: 启用 Vulkan GPU 加速(需要stt
)metal
: 启用 Metal GPU 加速(需要stt
)
§系统要求
- Rust: 1.70 或更高版本
- FFmpeg: 用于音频处理
- macOS:
brew install ffmpeg
- Ubuntu:
sudo apt-get install ffmpeg
- Windows: 使用 vcpkg 安装
- macOS:
- Whisper 模型: 需要下载 Whisper 模型文件(.bin 格式)
§错误处理
该库使用统一的错误处理机制,所有函数都返回 Result<T, Error>
类型,
其中 Error
是一个枚举类型,包含了所有可能的错误情况。
§性能考虑
- 首次加载模型时会有一定的延迟
- 建议在长期运行的应用中复用模型实例
- 使用 GPU 加速可以显著提高处理速度
- 对于实时应用,建议使用流式处理功能
§许可证
本项目采用 MIT 或 Apache 2.0 许可证。详情请参阅 LICENSE 文件。
§贡献
欢迎提交 Issue 和 Pull Request!请参阅 CONTRIBUTING.md 了解详情。
§更新日志
请参阅 CHANGELOG.md 了解版本更新详情。
Re-exports§
pub use rs_voice_toolkit_stt as stt;
pub use rs_voice_toolkit_audio as audio;
Enums§
- Error
- 统一错误类型
Functions§
- transcribe_
file - 重新导出文件转录函数
- transcribe_
file_ unified - 导出统一错误处理函数
Type Aliases§
- Result
- 统一结果类型别名