SpeechRecognition/README.md

259 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**获取miniconda安装包**
Invoke-WebRequest -Uri "https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe" -OutFile ".\Miniconda3-latest-Windows-x86_64.exe"
**激活conda仓库**
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/msys2
**在目录下进入conda环境**
%WINDIR%\System32\cmd.exe "/K" D:\ProgramData\miniconda3\Scripts\activate.bat D:\ProgramData\miniconda3
**创建虚拟环境**
conda create -n audio python=3.10 -y
**激活**
conda activate audio
**取消激活**
conda deactivate
**conda中执行**
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
**使用audio虚拟环境的python解释器**
D:\ProgramData\miniconda3\envs\audio\python.exe
# FunASR 语音识别服务
基于阿里达摩院 [FunASR](https://github.com/alibaba-damo-academy/FunASR) 的本地语音识别解决方案。
## 功能特性
| 功能 | 说明 |
|------|------|
| **句级时间戳** | 每句话的开始和结束时间 |
| **说话人分离** | 自动区分不同说话人 |
| **抗噪能力** | VAD 语音活动检测,过滤噪音 |
| **本地部署** | 完全离线运行,数据不上传云端 |
## 项目结构
```
audio2/
├── funasr_env/ # 虚拟环境
├── models/ # 模型缓存目录
├── asr_service.py # 核心服务类
├── test_asr.py # 测试脚本
├── example_usage.py # 使用示例
├── run_asr.bat # Windows 运行脚本
├── fix_path_issue.bat # 路径修复脚本(推荐)
├── enable_long_path.ps1 # 启用长路径支持(管理员)
├── requirements.txt # 依赖列表
└── README.md # 本文档
```
## 快速开始
### Windows 用户注意 ⚠️
如果遇到 **"文件名或扩展名太长"** 错误,请使用以下方法之一:
#### 方法 1使用 fix_path_issue.bat推荐
```bash
fix_path_issue.bat your_audio.wav
```
#### 方法 2启用 Windows 长路径支持(永久解决)
1. 右键 PowerShell → 以管理员身份运行
2. 运行:`enable_long_path.ps1`
3. 重启电脑
### 1. 激活虚拟环境
```bash
# Windows CMD
funasr_env\Scripts\activate.bat
# Linux/Mac
source funasr_env/bin/activate
```
### 2. 安装依赖(如果未安装)
```bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install funasr modelscope
```
### 3. 测试识别
```bash
# 方法 1使用修复脚本推荐 Windows 用户)
fix_path_issue.bat your_audio.wav
# 方法 2直接运行
python test_asr.py -f your_audio.wav
# 批量识别目录
python test_asr.py -d ./audio_files/
# 使用 SenseVoice 模型(多语言)
python test_asr.py -f your_audio.wav -m SenseVoice
```
## 代码使用示例
### 基础识别
```python
from asr_service import ASRService
# 初始化服务
service = ASRService(model_name="paraformer-zh")
# 识别音频
sentences = service.recognize("meeting.wav")
# 打印结果
for sent in sentences:
print(f"[{sent.speaker}] {sent.text}")
print(f" 时间: {sent.begin_time:.2f}s - {sent.end_time:.2f}s")
```
### 导出结果
```python
# 导出为 JSON
service.export_to_json(sentences, "result.json")
# 导出为 SRT 字幕
service.export_to_srt(sentences, "result.srt")
```
## 输出格式
### JSON 格式
```json
{
"total_sentences": 3,
"sentences": [
{
"speaker": "SPEAKER_00",
"text": "大家好,今天的会议现在开始。",
"begin_time": 0.50,
"end_time": 3.20,
"duration": 2.70
},
{
"speaker": "SPEAKER_01",
"text": "好的,我先汇报一下进度。",
"begin_time": 3.50,
"end_time": 6.10,
"duration": 2.60
}
]
}
```
### SRT 字幕格式
```srt
1
00:00:00,500 --> 00:00:03,200
[SPEAKER_00] 大家好,今天的会议现在开始。
2
00:00:03,500 --> 00:00:06,100
[SPEAKER_01] 好的,我先汇报一下进度。
```
## 支持的音频格式
- WAV
- MP3
- M4A
- FLAC
- OGG
- WMA
## 模型选择
| 模型 | 说明 | 适用场景 |
|------|------|----------|
| `paraformer-zh` | 达摩院中文模型(默认) | 中文语音识别,支持说话人分离 |
| `SenseVoice` | 多语言模型 | 多语言、方言、情感识别 |
## 硬件要求
| 配置 | 说明 |
|------|------|
| CPU | 支持,速度较慢 |
| GPU | 推荐RTF < 0.01 |
| 内存 | 4GB+ |
| 显存 | 2GB+ (GPU 模式) |
| 磁盘 | 2GB+模型缓存 |
## 模型下载
首次运行会自动从魔搭社区下载模型到 `models/` 目录
- Paraformer: ~500MB
- VAD: ~100MB
- 说话人模型: ~100MB
模型下载来源
- 魔搭社区https://modelscope.cn
- 模型缓存`./models/`项目目录下
## 常见问题
### Q: 文件名太长错误?
**A:** Windows 默认路径长度限制为 260 字符解决方法
1. 使用 `fix_path_issue.bat` 运行已配置短路径
2. 运行 `enable_long_path.ps1` 启用系统长路径支持需管理员权限+重启
### Q: 如何准备测试音频?
**A:**
- 自行录制会议/对话音频
- AISHELL 开源数据集https://www.openslr.org/33/
### Q: 支持多人同时说话吗?
**A:** 支持说话人分离模块会自动区分不同说话人
### Q: 对噪音环境有什么优化?
**A:** 集成了 FSMN-VAD 语音活动检测能有效过滤背景噪音
### Q: 如何切换 CPU/GPU
**A:**
```python
# CPU
service = ASRService(device="cpu")
# GPU
service = ASRService(device="cuda")
# 自动选择
service = ASRService(device="auto")
```
## 参考链接
- FunASR 官方仓库https://github.com/alibaba-damo-academy/FunASR
- 魔搭社区https://modelscope.cn
- PyTorch 安装https://pytorch.org/get-started/locally/
## 许可证
本项目使用 Apache-2.0 许可证
## 运行
run.bat input/VID_20251031_132320_019_mono.wav
run.bat input/VID_20251031_132320_019_mono_speak_only.wav