# Voxudio
[English Version](README-en.md)
Voxudio 是一个用 Rust 编写的高性能音频处理库,专注于语音处理和音色转换功能。它提供了一套完整的工具,用于音频采集、播放、语音活动检测、说话人特征提取、音色转换、OPUS编解码、在线特征提取和语音识别。
## 特性
- 🎤 **音频设备管理**
- 音频采集:支持从各种音频输入设备采集数据
- 音频播放:支持实时音频播放
- 🎵 **音频编解码支持**
- OPUS:支持OPUS音频格式的编码和解码
- 🔍 **语音活动检测 (VAD)**
- 实时检测音频中的语音活动
- 精确区分语音和非语音部分
- 👤 **说话人特征提取 (SEE)**
- 提取 256 维说话人特征向量
- 支持说话人识别和验证
- 🎭 **音色转换 (TCC)**
- 实时音色转换
- 保持原始语音内容和情感
- 🧑🔬 **在线特征提取器(FBank/MFCC/Whisper FBank)**
- 支持从音频信号中实时提取滤波器组(FBank)、梅尔频率倒谱系数(MFCC)、Whisper FBank 特征
- 算法主要来自 [kaldi-native-fbank](https://github.com/csukuangfj/kaldi-native-fbank)
- 支持通过 builder 的 `with_*` 方法灵活配置参数(如梅尔滤波器组数、窗函数类型等)
- 🗣️ **自动语音识别(ASR)**
- **全新流式 ASR**:基于 [X-ASR-zh-en 模型](https://github.com/Gilgamesh-J/X-ASR.git)的 Zipformer2 transducer 架构
- 支持多种Chumk配置:160ms / 480ms / 960ms / 1920ms
- 纯 ONNX Runtime 实现,低延迟、高质量
- 流式逐 token 输出,适合实时应用场景
- 提供 `AutomaticSpeechRecognizer` API(流式)和 `AutomaticSpeechRecognizerLegacy`(非流式)
- 详见 [ASR 模块文档](src/model/asr.rs)
- ⏩ **音频变速不变调(Sonic)**
- 基于 [Sonic](https://github.com/waywardgeek/sonic) 库的高质量音频变速不变调处理
- 支持变速不变调(speed)、变调(pitch)、变速变调(rate)、音量调节(volume)
- 支持 f32 和 i16 采样格式,流式和一次性处理
- 📱 **跨平台支持**
- 支持 Windows、Linux、macOS
- Android 平台支持
- iOS 平台尚未全面测试
## 模型文件
由于模型文件较大,未包含在版本控制中。请从以下地址下载模型文件:
https://github.com/mzdk100/voxudio/releases/tag/model
### 模型文件说明
下载后将模型文件放置在项目根目录的 `checkpoint` 文件夹中。
#### ASR 模型(新增)
```bash
git lfs install
git clone https://www.modelscope.ai/Gilgamesh-J/X-ASR-zh-en.git
```
将`deployment/models`复制到`../checkpoint`中
## 安装
将以下依赖添加到你的 `Cargo.toml` 文件中:
```shell
cargo add voxudio
```
## 使用示例
1. [音频采集](examples/ac.rs)
2. [音频播放](examples/ap.rs)
3. [语音活动检测](examples/vad.rs)
4. [音色转换](examples/tcc.rs)
5. [OPUS编解码](examples/oc.rs)
6. [在线特征提取](examples/offe.rs)
7. [自动语音识别](examples/asr.rs)
8. [音频变速不变调](examples/ss.rs)
9. [Android 使用示例](examples/android)
运行 Android 示例:
1. 确保已安装 Android SDK 和 NDK
2. 进入 examples/android 目录
3. 在 Windows 上运行:
```bash
run.bat
``
在 Linux/macOS 上运行:
```bash
./run.sh
```
## 性能优化
- 使用 ONNX Runtime 进行高效��模型推理
- 基于 Tokio 的异步处理
- 优化的音频数据处理流程
## 许可证
本项目采用 Apache-2.0 许可证。详见 [LICENSE](../LICENSE) 文件。
## 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本项目
2. 创建你的特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交你的修改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启一个 Pull Request
## 联系我们
如果你有任何问题或建议,欢迎提交 Issue 或通过以下方式联系我们:
- Issue Tracker: github.com/mzdk100/voxudio/issues
- Email: mzdk100@foxmail.com