Files
CipherTalk/electron/services/README-STT.md
T

4.7 KiB
Raw Blame History

语音识别服务说明

当前方案

1. voiceTranscribeService.ts(当前使用)

  • 模型: SenseVoice (阿里达摩院)
  • 依赖: sherpa-onnx-node
  • 加速: 仅 CPU
  • 状态: 正在使用

2. voiceTranscribeServiceWhisper.tsGPU 加速方案)

  • 模型: Whisper (OpenAI)
  • 依赖: whisper.cpp (预编译可执行文件)
  • 加速: GPU (CUDA) + CPU 回退
  • 性能: 10-15x 提升
  • 状态: 可用,需要安装

如何启用 GPU 加速

快速开始

  1. 安装依赖

    npm install adm-zip --save-dev
    
  2. 下载 whisper.cpp

    node scripts/setup-whisper-gpu.js
    
  3. 集成到项目

    参考文档:

    • 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): 质量很好,需要更多显存

下一步

  1. 阅读快速开始指南:Docs/GPU加速快速开始.md
  2. 运行安装脚本:node scripts/setup-whisper-gpu.js
  3. 测试 GPU 加速效果
  4. 根据需要集成到项目中

需要帮助?查看详细文档或提交 Issue。