--- 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 "file=@audio.wav" ``` ## 安装与运行 ### 环境要求 - 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)