DuRT AI系统架构设计 (macOS)

1. 系统概述
DuRT是一款基于本地的macOS语音识别与翻译工具,核心目标是在保障用户隐私的前提下,提供高精度、低延迟的多语言实时转译服务。系统通过本地AI模型处理语音流,以悬浮窗口呈现结果,杜绝数据外传。


2. 架构设计原则

  • 隐私优先:所有数据处理均在设备本地完成
  • 低延迟:优化模型推理速度,响应时间<500ms
  • 跨芯片支持:适配Apple Silicon (M系列) 及Intel x86
  • 可扩展性:模块化设计支持未来模型/语言扩展

3. 技术栈选型与版本

模块 技术选型 版本 说明
语音识别 Apple Speech Framework macOS 13+ 原生低延迟ASR
Whisper.cpp (C++推理引擎) v1.5.0 备选高精度模型
机器翻译 Bergamot (Mozilla) v0.6.0 本地化神经翻译引擎
UI框架 SwiftUI 5.0 原生悬浮窗实现
硬件加速 Core ML + ANE macOS 13+ 利用神经网络引擎加速推理
音频处理 AVFoundation - 实时音频流捕获与预处理
依赖管理 Swift Package Manager 5.8+

4. 分层架构设计

🔄 正在加载流程图...

graph TD A[用户界面层] -->|语音指令| B(服务层) B --> C[AI引擎层] C --> D[硬件加速层] D --> E[macOS系统层] subgraph 核心模块 B --> B1[语音捕获服务] B --> B2[结果渲染服务] C --> C1[语音识别引擎] C --> C2[翻译引擎] C1 --> C1a[Apple Speech] C1 --> C1b[Whisper.cpp] C2 --> C2a[Bergamot] D --> D1[Core ML] D --> D2[ANE加速] end

4.1 关键组件说明

  • 语音捕获服务
    采用AVAudioEngine实时捕获16kHz PCM音频流,通过环形缓冲区传递至识别引擎,延迟控制在80ms内。

  • 多引擎识别路由

    func routeAudio(buffer: AVAudioPCMBuffer) {
      switch config.engineMode {
        case .appleSpeech: 
          appleSpeechTranscriber.process(buffer)
        case .whisper: 
          whisperEngine?.feedAudio(buffer)
      }
    }
  • 隐私安全设计

    • 沙盒机制禁止网络访问
    • 内存数据加密(CryptoKit AES-GCM)
    • 麦克风权限动态申请(NSMicrophoneUsageDescription
  • 性能优化策略

    • 模型量化:Whisper模型使用GGML Q4量化(体积缩减75%)
    • ANE内核优化:定制MLComputePlan调度计划
    • 动态卸载:闲置5秒后释放翻译模型内存

5. 实施流程

  1. 环境搭建

    # 安装Bergamot依赖
    brew install cmake libpng marian-dev
  2. 核心引擎集成

    • 通过SPM集成Whisper.cpp:
      Package.swift 添加:
      .package(url: "https://github.com/ggerganov/whisper.cpp", .branch("master"))
    • 编译Core ML模型:
      coremlcompiler compile Whisper.mlmodel --output-dir Models
  3. 悬浮窗服务实现

    class FloatingWindow: NSWindow {
      override init(contentRect: NSRect) {
        super.init(contentRect: contentRect, styleMask: [.borderless], backing: .buffered, defer: false)
        self.level = .floating
        self.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
      }
    }
  4. 系统服务注册
    Info.plist中声明后台音频服务:

    <key>NSBackgroundModes</key>
    <array>
      <string>audio</string>
    </array>

6. 扩展性设计

  • 插件式引擎架构
    通过EngineProtocol抽象接口,新增引擎只需实现:

    protocol EngineProtocol {
      func load(modelPath: String) -> Bool
      func process(audio: [Float]) -> String
    }
  • 动态模型加载
    用户可导入自定义模型包(目录结构):

    /Models
      /zh-CN
        AppleSpeech.mlmodelc
        Bergamot.mloc
      /ja-JP
        ...
  • 配置热更新
    使用PropertyListDecoder实时读取config.plist更新语言对/引擎参数


7. 安全与合规

  1. 静态分析:集成SwiftLint(v0.54.0)进行代码审计
  2. 沙盒配置
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.device.audio-input</key>
    <true/>
  3. 数据生命周期:音频缓冲区存活周期<2秒,处理完成后立即覆写

8. 性能指标

场景 Apple M2 Pro Intel i7
中英识别延迟 220ms 380ms
内存占用峰值 480MB 720MB
连续工作功耗 <5W <18W

测试条件:Whisper-small模型,5分钟持续语音输入


9. 部署策略

  1. App Store发布
    • 启用Hardened Runtime
    • 使用Auto Provisioning管理证书
  2. 离线包分发
    提供.dmg下载包(签名证书:Developer ID Application)

本架构通过深度集成macOS原生框架与精选本地化AI引擎,在保障零数据泄露的前提下实现专业级语音处理能力。模块化设计支持未来扩展TTS等新功能,ANE加速方案确保在Apple Silicon设备获得最佳能效比。