|
|
# 实时语音转文字系统使用说明
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
|
本项目是一个基于 sherpa-onnx 的实时语音转文字系统,支持中英双语识别,具有端点检测、断句处理和自动标点功能。系统采用流式识别技术,能够实时将语音转换为文字,并支持部分识别结果显示。
|
|
|
|
|
|
## 系统要求
|
|
|
|
|
|
- **操作系统**: macOS / Linux
|
|
|
- **Python版本**: >= 3.12.10
|
|
|
- **包管理工具**: uv
|
|
|
- **音频设备**: 支持录音的麦克风
|
|
|
|
|
|
## 安装步骤
|
|
|
|
|
|
### 1. 克隆项目
|
|
|
|
|
|
```bash
|
|
|
git clone <项目地址>
|
|
|
cd realTimeVTT
|
|
|
```
|
|
|
|
|
|
### 2. 安装依赖
|
|
|
|
|
|
使用 uv 安装项目依赖:
|
|
|
|
|
|
```bash
|
|
|
uv sync
|
|
|
```
|
|
|
|
|
|
### 3. 下载语音识别模型
|
|
|
|
|
|
首次使用需要下载语音识别模型:
|
|
|
|
|
|
```bash
|
|
|
uv run python main.py --download-model
|
|
|
```
|
|
|
|
|
|
系统会提供交互式界面,选择合适的模型进行下载。推荐使用默认的中英双语模型。
|
|
|
|
|
|
## 基本使用
|
|
|
|
|
|
### 启动实时语音识别
|
|
|
|
|
|
```bash
|
|
|
uv run python main.py
|
|
|
```
|
|
|
|
|
|
启动后,系统会:
|
|
|
1. 初始化音频设备
|
|
|
2. 加载语音识别模型
|
|
|
3. 开始实时录音和识别
|
|
|
4. 在控制台显示识别结果
|
|
|
5. 将结果保存到 `output/transcription.txt` 文件
|
|
|
|
|
|
### 查看可用音频设备
|
|
|
|
|
|
```bash
|
|
|
uv run python main.py --list-devices
|
|
|
```
|
|
|
|
|
|
### 启用调试模式
|
|
|
|
|
|
```bash
|
|
|
uv run python main.py --log-level DEBUG
|
|
|
```
|
|
|
|
|
|
## 命令行参数
|
|
|
|
|
|
| 参数 | 说明 |
|
|
|
|------|------|
|
|
|
| `--download-model` | 下载语音识别模型 |
|
|
|
| `--list-devices` | 列出可用的音频设备 |
|
|
|
| `--log-level` | 设置日志级别 (DEBUG/INFO/WARNING/ERROR) |
|
|
|
| `--no-save` | 不保存识别结果到文件 |
|
|
|
| `--no-partial` | 不显示部分识别结果 |
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
### 1. 实时语音识别
|
|
|
- 支持中英双语识别
|
|
|
- 流式处理,低延迟
|
|
|
- 自动端点检测
|
|
|
|
|
|
### 2. 断句和标点处理
|
|
|
- 智能断句识别
|
|
|
- 自动添加标点符号
|
|
|
- 支持中英文混合文本
|
|
|
|
|
|
### 3. 结果输出
|
|
|
- 控制台实时显示
|
|
|
- 自动保存到文件
|
|
|
- 支持时间戳显示
|
|
|
|
|
|
### 4. 音频处理
|
|
|
- 自动音频设备检测
|
|
|
- 噪声抑制
|
|
|
- 音量自动调节
|
|
|
|
|
|
## 配置说明
|
|
|
|
|
|
### 模型配置 (src/config.py)
|
|
|
|
|
|
```python
|
|
|
class ModelConfig:
|
|
|
# 模型文件路径
|
|
|
model_dir = "models/"
|
|
|
|
|
|
# 语音识别参数
|
|
|
sample_rate = 16000 # 采样率
|
|
|
feature_dim = 80 # 特征维度
|
|
|
num_threads = 1 # 线程数
|
|
|
|
|
|
# 端点检测参数
|
|
|
enable_endpoint = True
|
|
|
rule1_min_trailing_silence = 2.4 # 静音检测阈值1
|
|
|
rule2_min_trailing_silence = 1.2 # 静音检测阈值2
|
|
|
rule3_min_utterance_length = 300 # 最小语音长度
|
|
|
```
|
|
|
|
|
|
### 音频配置
|
|
|
|
|
|
```python
|
|
|
class AudioConfig:
|
|
|
sample_rate = 16000 # 采样率
|
|
|
chunk_size = 1024 # 音频块大小
|
|
|
channels = 1 # 单声道
|
|
|
samples_per_read = 1600 # 每次读取样本数
|
|
|
```
|
|
|
|
|
|
### 应用配置
|
|
|
|
|
|
```python
|
|
|
class AppConfig:
|
|
|
show_partial_results = True # 显示部分识别结果
|
|
|
show_timestamps = True # 显示时间戳
|
|
|
save_to_file = True # 保存到文件
|
|
|
output_file = "output/transcription.txt" # 输出文件路径
|
|
|
```
|
|
|
|
|
|
## 使用示例
|
|
|
|
|
|
### 基本使用流程
|
|
|
|
|
|
1. **启动系统**
|
|
|
```bash
|
|
|
uv run python main.py
|
|
|
```
|
|
|
|
|
|
2. **开始说话**
|
|
|
- 系统会自动检测语音输入
|
|
|
- 实时显示识别结果
|
|
|
- 自动进行断句和标点处理
|
|
|
|
|
|
3. **查看结果**
|
|
|
- 控制台实时显示
|
|
|
- 结果自动保存到 `output/transcription.txt`
|
|
|
|
|
|
4. **停止识别**
|
|
|
- 按 `Ctrl+C` 停止程序
|
|
|
|
|
|
### 高级使用
|
|
|
|
|
|
**仅显示最终结果(不显示部分识别)**
|
|
|
```bash
|
|
|
uv run python main.py --no-partial
|
|
|
```
|
|
|
|
|
|
**不保存到文件**
|
|
|
```bash
|
|
|
uv run python main.py --no-save
|
|
|
```
|
|
|
|
|
|
**调试模式**
|
|
|
```bash
|
|
|
uv run python main.py --log-level DEBUG
|
|
|
```
|
|
|
|
|
|
## 输出格式
|
|
|
|
|
|
### 控制台输出
|
|
|
```
|
|
|
[14:30:25] 你好,这是一个测试。
|
|
|
[14:30:28] 语音识别效果很好。
|
|
|
[14:30:32] 支持中英文混合识别,Hello world!
|
|
|
```
|
|
|
|
|
|
### 文件输出
|
|
|
识别结果会保存到 `output/transcription.txt` 文件中,格式与控制台输出相同。
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
1. **模型文件缺失**
|
|
|
```
|
|
|
错误: 缺少模型文件
|
|
|
```
|
|
|
**解决方案**: 运行 `uv run python main.py --download-model` 下载模型
|
|
|
|
|
|
2. **音频设备初始化失败**
|
|
|
```
|
|
|
错误: 无法初始化音频设备
|
|
|
```
|
|
|
**解决方案**:
|
|
|
- 检查麦克风是否正常连接
|
|
|
- 运行 `--list-devices` 查看可用设备
|
|
|
- 确保系统音频权限已授予
|
|
|
|
|
|
3. **识别效果不佳**
|
|
|
**解决方案**:
|
|
|
- 确保环境安静
|
|
|
- 调整麦克风音量
|
|
|
- 保持适当的说话距离
|
|
|
|
|
|
4. **依赖安装失败**
|
|
|
**解决方案**:
|
|
|
- 确保使用 Python 3.12+
|
|
|
- 在 macOS 上可能需要安装 portaudio: `brew install portaudio`
|
|
|
- 使用 `uv sync --reinstall` 重新安装依赖
|
|
|
|
|
|
### 日志查看
|
|
|
|
|
|
启用调试日志查看详细信息:
|
|
|
```bash
|
|
|
uv run python main.py --log-level DEBUG
|
|
|
```
|
|
|
|
|
|
日志文件保存在 `logs/app.log`
|
|
|
|
|
|
## 性能优化
|
|
|
|
|
|
### 系统性能
|
|
|
- 建议在安静环境下使用
|
|
|
- 确保系统有足够的内存(建议 4GB+)
|
|
|
- 使用 SSD 存储以提高模型加载速度
|
|
|
|
|
|
### 识别精度
|
|
|
- 清晰发音,语速适中
|
|
|
- 避免背景噪音
|
|
|
- 保持麦克风距离适中(20-30cm)
|
|
|
|
|
|
## 开发说明
|
|
|
|
|
|
### 项目结构
|
|
|
```
|
|
|
.
|
|
|
├── main.py # 主程序入口
|
|
|
├── src/
|
|
|
│ ├── __init__.py
|
|
|
│ ├── config.py # 配置管理
|
|
|
│ ├── audio_processor.py # 音频处理
|
|
|
│ ├── speech_recognizer.py # 语音识别
|
|
|
│ ├── realtime_vtt.py # 主应用逻辑
|
|
|
│ └── model_downloader.py # 模型下载
|
|
|
├── models/ # 模型文件目录
|
|
|
├── output/ # 输出文件目录
|
|
|
├── logs/ # 日志文件目录
|
|
|
└── docs/ # 文档目录
|
|
|
```
|
|
|
|
|
|
### 扩展开发
|
|
|
|
|
|
如需扩展功能,可以:
|
|
|
1. 修改 `src/config.py` 调整参数
|
|
|
2. 在 `src/speech_recognizer.py` 中添加新的识别逻辑
|
|
|
3. 在 `src/realtime_vtt.py` 中添加新的应用功能
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
本项目遵循开源许可证,具体请查看 LICENSE 文件。
|
|
|
|
|
|
## 技术支持
|
|
|
|
|
|
如遇到问题,请:
|
|
|
1. 查看本使用说明
|
|
|
2. 检查日志文件
|
|
|
3. 提交 Issue 到项目仓库
|
|
|
|
|
|
---
|
|
|
|
|
|
**注意**: 首次使用请务必先下载模型文件,否则无法正常运行。 |