修改readme
This commit is contained in:
parent
1507093701
commit
6530c80149
241
README.md
241
README.md
|
|
@ -23,243 +23,14 @@ pip install -r requirements.txt
|
||||||
**使用audio虚拟环境的python解释器**
|
**使用audio虚拟环境的python解释器**
|
||||||
D:\ProgramData\miniconda3\envs\audio\python.exe
|
D:\ProgramData\miniconda3\envs\audio\python.exe
|
||||||
|
|
||||||
|
将视频或音频放置在input目录下,
|
||||||
|
|
||||||
|
运行server.py开启服务
|
||||||
|
|
||||||
|
或运行main.py进行测试
|
||||||
|
|
||||||
|
main.py中的main函数接受文件名或文件夹,路径为相对于input的路径,
|
||||||
|
|
||||||
|
例如如果input目录下有一个文件夹test,文件夹下有一个文件1.mp3,
|
||||||
|
|
||||||
|
则main.py中的main函数接受的路径为test/1.mp3或test
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 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
|
|
||||||
Loading…
Reference in New Issue