tianyaogavin's picture
init main framework
1bf36cc
---
title: 伪流式音频转写 + LLM优化系统
emoji: 🎙️
colorFrom: indigo
colorTo: pink
sdk: docker
app_file: app.py
pinned: false
---
# 伪流式音频转写 + LLM优化系统
这个项目实现了一个伪流式音频转写系统,包括VAD分段、Whisper转录、语义聚合、LLM优化和翻译等功能。系统采用模块化设计,各个组件可以独立工作,也可以组合使用。
## 系统架构
```mermaid
graph TD
A[音频流输入] --> B[VAD]
B --> C[Transcribe]
C --> D[语义聚合控制器]
D --> E[即时输出模块]
D --> F[LLM 优化调度器]
F --> G[优化后回填模块]
G --> E
E --> H[翻译模块]
```
## 主要模块
- **VAD分段器**: 根据能量、静音、说话边界等信号判断语音段落
- **Whisper转录模块**: 对每段VAD输出进行whisper转写,输出文本+时间戳
- **语义聚合控制器**: 维护segment缓冲池,判断是否组成完整语义单元,推送到下游
- **即时输出模块**: 将聚合后的转写结果立即显示给用户
- **LLM优化调度器**: 接收待优化句子,加入优化任务队列
- **优化后回填模块**: 对照原句编号,将LLM优化结果回填替换
- **翻译模块**: 接收所有来自即时输出模块的句子,将其翻译为目标语言
## 语义聚合控制器
语义聚合控制器是系统的核心模块,负责将多个音频片段的转录结果聚合成完整的语义单元(句子),并推送到下游模块(显示和翻译)。
### 主要功能
1. **维护转录片段缓冲池**:收集来自转录模块的片段,直到形成完整语义单元
2. **判断语义完整性**:使用ChatGPT进行few-shot学习,判断多个片段是否组成完整句子
3. **重新转录**:将多个片段的音频合并,进行整体重新转录,提高准确性
4. **推送到下游**:将聚合结果发送到显示模块和翻译模块
详细信息请参考 [aggregator/README.md](aggregator/README.md)。
## 使用示例
### 完整流程示例
```python
from vad.vad import VoiceActivityDetector
from transcribe.transcribe import AudioTranscriber
from display.display import OutputRenderer
from translator.translator import NLLBTranslator
from aggregator.semantic_aggregator import SemanticAggregator
# 初始化各个模块
vad = VoiceActivityDetector()
transcriber = AudioTranscriber(model="small", device="cuda")
renderer = OutputRenderer()
translator = NLLBTranslator()
# 回调函数
def display_callback(sentence_id, text, state):
renderer.display(sentence_id, text, state)
def translate_callback(sentence_id, text):
translation = translator.translate(text)
print(f"[翻译] 句子 {sentence_id}: {translation}")
# 初始化聚合器
aggregator = SemanticAggregator(
on_display=display_callback,
on_translate=translate_callback,
transcriber=transcriber
)
# 处理音频
audio_data, sample_rate = sf.read("audio.wav")
segments = vad.detect_voice_segments(audio_data, sample_rate)
for i, (start, end) in enumerate(segments):
segment_audio = audio_data[int(start * sample_rate):int(end * sample_rate)]
results = transcriber.transcribe_segment(segment_audio, start_time=start)
for result in results:
result.segment_index = i + 1
aggregator.add_segment(result)
# 最后强制刷新缓冲区
aggregator.flush(force=True)
```
更详细的示例请参考 [aggregator/integration_example.py](aggregator/integration_example.py)。
## API服务
系统也提供了REST API服务,可以通过HTTP请求进行音频转写。
### API端点
- `GET /` → 健康检查
- `POST /transcribe` → 上传`.wav/.mp3`文件并接收转写文本
### 使用示例 (cURL)
```bash
curl -X POST https://your-space-name.hf.space/transcribe \
-F "[email protected]"
```
## 安装与运行
### 环境要求
- Python 3.8+
- PyTorch 1.12+
- CUDA 11.6+ (如果使用GPU)
### 安装依赖
```bash
pip install -r requirements.txt
```
### 运行API服务
```bash
python app.py
```
### 运行集成示例
```bash
# 设置OpenAI API密钥(用于句子完整性判断)
export OPENAI_API_KEY=your_api_key
# 运行集成示例
python -m aggregator.integration_example
```
## 许可证
[MIT License](LICENSE)