用C#实现实时语音识别与翻译:Whisper技术实战
该应用可从Teams等平台捕获音频流,根据语音幅度和静音段自动分句,再利用Whisper将俄语、英语或法语语音转为文字,并进行实时翻译。整个C#实现中约20%为自定义代码,其余均通过集成完成。当仅选择单一语言时,支持听写模式——仅进行语音转文字,可选保存音频。
设置项支持校准:
- 语音检测的音量阈值。
- 句子间的静音时长。
底部右角显示的统计信息包含当前音频电平和检测标志,便于精细调优。音频捕获仅支持系统混音(耳机/扬声器输出),不支持麦克风直连输入。
Whisper模型选择与性能表现
测试了多种本地语音识别方案:
- Sherpa (ONNX):流式法语版本与架构不兼容。
- Foundry Local (微软):原始文件传输方式,基于Whisper框架。
最终选定Whisper:
| 模型 | 速度 | 逻辑处理 | 备注 |
|-------|-------|----------|------|
| 基础版 | 快 | 无 | 简单,无上下文 |
| 小型版 | 中等 | 有 | 最佳平衡,温度设为0.1–0.2 |
| 中型版 | 慢 | 良好 | 实时会议中分块队列易堆积 |
未使用NPU/GPU时,内存占用上升,但高质量会议音频下结果仍可接受。
集成翻译服务
提供两种选项:
- OpenAI:在设置中配置API密钥、模型及请求地址。
- Azure翻译服务:免费套餐每月提供200万字符;需注册账户。
ITranslationService 接口设计简洁,便于扩展新服务商(如Yandex API,需付费)。目前本地翻译器无法达到基准质量标准。
Azure示例配置:
public class AzureTranslationService : ITranslationService
{
private readonly string _key;
// ...
}
实际应用场景与局限性
本工具适用于实时多语言会议场景,无需录音。已实测支持法语、英语和俄语。并非通用录音设备——仅捕获系统音频输出。
适合中高级开发者:模块化架构聚焦流式数据块处理,可通过替换STT/翻译引擎或添加新VAD算法轻松扩展。
核心亮点:
- 基于类似VAD参数的系统音频捕获与分句。
- Whisper小型版最适合实时使用:温度0.1–0.2,无需GPU。
- 简洁翻译接口;Azure每月提供200万字符免费额度。
- 支持仅语音识别模式,无需翻译。
- 实时统计数据辅助优化语音检测精度。
— Editorial Team
暂无评论。