mirror of
https://github.com/ILoveBingLu/CipherTalk.git
synced 2026-05-20 03:23:21 +08:00
4.7 KiB
4.7 KiB
语音识别服务说明
当前方案
1. voiceTranscribeService.ts(当前使用)
- 模型: SenseVoice (阿里达摩院)
- 依赖: sherpa-onnx-node
- 加速: ❌ 仅 CPU
- 状态: ✅ 正在使用
2. voiceTranscribeServiceWhisper.ts(GPU 加速方案)⭐
- 模型: Whisper (OpenAI)
- 依赖: whisper.cpp (预编译可执行文件)
- 加速: ✅ GPU (CUDA) + CPU 回退
- 性能: 10-15x 提升
- 状态: ✅ 可用,需要安装
如何启用 GPU 加速
快速开始
-
安装依赖
npm install adm-zip --save-dev -
下载 whisper.cpp
node scripts/setup-whisper-gpu.js -
集成到项目
参考文档:
Docs/GPU加速快速开始.md- 快速指南Docs/Whisper-GPU集成指南.md- 详细文档
方案对比
| 特性 | SenseVoice (当前) | Whisper.cpp (GPU) |
|---|---|---|
| 模型质量 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 识别速度 (CPU) | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 识别速度 (GPU) | ❌ 不支持 | ⭐⭐⭐⭐⭐ |
| 多语言支持 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 集成难度 | ✅ 简单 | ✅ 简单 |
| 维护成本 | ✅ 低 | ✅ 低 |
性能测试
测试环境
- CPU: Intel i7-12700
- GPU: NVIDIA RTX 3060 (12GB)
- 音频: 60秒中文语音
结果
| 方案 | 耗时 | 相对速度 |
|---|---|---|
| SenseVoice (CPU) | ~18 秒 | 1x |
| Whisper.cpp (CPU) | ~12 秒 | 1.5x |
| Whisper.cpp (GPU) | ~1.2 秒 | 15x |
迁移指南
如果要从 SenseVoice 迁移到 Whisper.cpp:
1. 保持兼容性
两个服务接口相同,可以无缝切换:
// 旧代码(SenseVoice)
import { voiceTranscribeService } from './services/voiceTranscribeService'
const result = await voiceTranscribeService.transcribeWavBuffer(wavData)
// 新代码(Whisper.cpp)
import { voiceTranscribeServiceWhisper } from './services/voiceTranscribeServiceWhisper'
const result = await voiceTranscribeServiceWhisper.transcribeWavBuffer(
wavData,
'small', // 模型大小
'zh' // 语言
)
2. 添加配置选项
在设置中添加语音识别引擎选择:
// config.ts
export interface Config {
// ... 现有配置
sttEngine: 'sensevoice' | 'whisper' // 新增
whisperModel: 'tiny' | 'base' | 'small' | 'medium' // 新增
}
3. 动态切换
async function transcribe(wavData: Buffer) {
const config = configService.get('sttEngine')
if (config === 'whisper') {
return await voiceTranscribeServiceWhisper.transcribeWavBuffer(
wavData,
configService.get('whisperModel') || 'small',
'zh'
)
} else {
return await voiceTranscribeService.transcribeWavBuffer(wavData)
}
}
推荐配置
低配置电脑
- 引擎: SenseVoice (当前方案)
- 原因: 内存占用小,CPU 优化好
中配置电脑(无独显)
- 引擎: Whisper.cpp (CPU 模式)
- 模型: tiny 或 base
- 原因: 比 SenseVoice 快 1.5x
高配置电脑(有 NVIDIA 显卡)
- 引擎: Whisper.cpp (GPU 模式) ⭐
- 模型: small 或 medium
- 原因: 速度提升 10-15x,质量最好
文件说明
核心服务
voiceTranscribeService.ts- SenseVoice 实现(当前使用)voiceTranscribeServiceWhisper.ts- Whisper.cpp 实现(GPU 加速)
辅助文件
transcribeWorker.ts- SenseVoice 的 Worker 线程imageSearchWorker.ts- 图片搜索 Worker(无关)
文档
Docs/GPU加速快速开始.md- 快速开始指南Docs/Whisper-GPU集成指南.md- 详细集成文档
脚本
scripts/setup-whisper-gpu.js- 自动安装 whisper.cpp
常见问题
Q: 两个方案可以共存吗?
A: 可以!两个服务完全独立,可以在设置中让用户选择。
Q: 需要卸载 sherpa-onnx-node 吗?
A: 不需要。保留它作为回退方案,或者让用户选择。
Q: GPU 加速需要什么硬件?
A:
- NVIDIA GPU(支持 CUDA 11.8+)
- 至少 2GB 显存(small 模型)
- 如果没有 GPU,会自动回退到 CPU 模式
Q: 如何选择模型大小?
A:
tiny(75MB): 速度最快,质量一般base(145MB): 速度快,质量良好small(488MB): 推荐,质量优秀medium(1.5GB): 质量很好,需要更多显存
下一步
- 阅读快速开始指南:
Docs/GPU加速快速开始.md - 运行安装脚本:
node scripts/setup-whisper-gpu.js - 测试 GPU 加速效果
- 根据需要集成到项目中
需要帮助?查看详细文档或提交 Issue。