5.1 KiB
5.1 KiB
FunASR 语音识别服务
基于阿里达摩院 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(推荐)
fix_path_issue.bat your_audio.wav
方法 2:启用 Windows 长路径支持(永久解决)
- 右键 PowerShell → 以管理员身份运行
- 运行:
enable_long_path.ps1 - 重启电脑
1. 激活虚拟环境
# Windows CMD
funasr_env\Scripts\activate.bat
# Linux/Mac
source funasr_env/bin/activate
2. 安装依赖(如果未安装)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install funasr modelscope
3. 测试识别
# 方法 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
代码使用示例
基础识别
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")
导出结果
# 导出为 JSON
service.export_to_json(sentences, "result.json")
# 导出为 SRT 字幕
service.export_to_srt(sentences, "result.srt")
输出格式
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 字幕格式
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 字符。解决方法:
- 使用
fix_path_issue.bat运行(已配置短路径) - 运行
enable_long_path.ps1启用系统长路径支持(需管理员权限+重启)
Q: 如何准备测试音频?
A:
- 自行录制会议/对话音频
- AISHELL 开源数据集:https://www.openslr.org/33/
Q: 支持多人同时说话吗?
A: 支持。说话人分离模块会自动区分不同说话人。
Q: 对噪音环境有什么优化?
A: 集成了 FSMN-VAD 语音活动检测,能有效过滤背景噪音。
Q: 如何切换 CPU/GPU?
A:
# 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 VID_20251031_132320_019_mono.wav