metadata
title: 伪流式音频转写 + LLM优化系统
emoji: 🎙️
colorFrom: indigo
colorTo: pink
sdk: docker
app_file: app.py
pinned: false
伪流式音频转写 + LLM优化系统
这个项目实现了一个伪流式音频转写系统,包括VAD分段、Whisper转录、语义聚合、LLM优化和翻译等功能。系统采用模块化设计,各个组件可以独立工作,也可以组合使用。
系统架构
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优化结果回填替换
- 翻译模块: 接收所有来自即时输出模块的句子,将其翻译为目标语言
语义聚合控制器
语义聚合控制器是系统的核心模块,负责将多个音频片段的转录结果聚合成完整的语义单元(句子),并推送到下游模块(显示和翻译)。
主要功能
- 维护转录片段缓冲池:收集来自转录模块的片段,直到形成完整语义单元
- 判断语义完整性:使用ChatGPT进行few-shot学习,判断多个片段是否组成完整句子
- 重新转录:将多个片段的音频合并,进行整体重新转录,提高准确性
- 推送到下游:将聚合结果发送到显示模块和翻译模块
详细信息请参考 aggregator/README.md。
使用示例
完整流程示例
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。
API服务
系统也提供了REST API服务,可以通过HTTP请求进行音频转写。
API端点
GET /
→ 健康检查POST /transcribe
→ 上传.wav/.mp3
文件并接收转写文本
使用示例 (cURL)
curl -X POST https://your-space-name.hf.space/transcribe \
-F "[email protected]"
安装与运行
环境要求
- Python 3.8+
- PyTorch 1.12+
- CUDA 11.6+ (如果使用GPU)
安装依赖
pip install -r requirements.txt
运行API服务
python app.py
运行集成示例
# 设置OpenAI API密钥(用于句子完整性判断)
export OPENAI_API_KEY=your_api_key
# 运行集成示例
python -m aggregator.integration_example