speech-swift

苹果芯片上跑本地语音AI,离线也能用

开源 🏷️定价信息待确认 ✅ 目前可打开 音频音乐 🍴 复刻 188 🐛 待处理 13 👀 关注 10
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 1266
维护状态 活跃
是否开源 开源
定价模式 🏷️定价信息待确认

项目预览

speech-swift 项目界面预览图
图片来源:项目官网

项目数据

分类音频音乐
开发团队soniqo
定价模式🏷️定价信息待确认
价格说明定价信息待确认
访问状态✅ 目前可打开
是否开源是
开源协议Apache-2.0
主要语言Swift
技术栈/模型apple-silicon,asr,coreml,ios,macos,mlx,neural-engine,on-device,speaker-diarization,speech-enhancement,speech-recognition,speech-to-speech,swift,text-to-speech,tts,voice-activity-detection
GitHub 星标★ 1266
上线时间2026-02-04 00:00:00
代码更新2026-11-06
仓库体积17.1 MB
本站数据更新2026-11-08
维护状态活跃
收录时间2026-08-09
浏览次数4

项目介绍

speech-swift 是一个专为 Apple Silicon 设备打造的 AI 语音工具包,基于 MLX 和 CoreML 框架,提供端侧语音识别(ASR)、文本转语音(TTS)、语音到语音转换、语音活动检测(VAD)以及说话人分离(diarization)等核心能力。它解决了在苹果生态中开发者难以高效集成高性能本地语音功能的问题,充分利用神经引擎和统一内存架构,实现低延迟、离线可用的语音处理。项目采用 Swift 语言编写,面向 iOS 和 macOS 平台,强调设备端推理,保护用户隐私。其核心能力包括:多语言语音识别、自然语音合成、实时语音交互、噪声环境下的语音检测,以及区分不同说话人的会话分析。适合构建语音助手、实时翻译、会议记录、无障碍辅助等应用,为苹果开发者提供了一套原生的、高性能的语音 AI 解决方案。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 1266

使用教程

ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。

难度:进阶 约 15 分钟 部署方式:库/依赖 6 步

环境要求

  • Apple Silicon 设备(Mac 或 iOS),项目专为 Apple Silicon 打造
  • Swift / Xcode 工具链,用于 Swift Package Manager 集成
  • 首次使用需要联网,从 HuggingFace 下载模型权重
  • (可选)国内网络环境需准备 HuggingFace 镜像地址

安装与启动步骤

  1. 1确认设备与工具链

    speech-swift 面向 Mac 和 iOS,且只在 Apple Silicon 上本地运行。请确认使用 Apple Silicon 设备并已安装 Xcode / Swift 工具链。

  2. 2添加 SPM 依赖

    在项目的 Package.swift 中把 speech-swift 以分支 main 的方式加进依赖列表。注意这里用 branch: "main"。

    .package(url: "https://github.com/soniqo/speech-swift", branch: "main")
  3. 3声明所需模块

    每个模型都是独立的 SPM library,按需引入即可,不用的模块不会增加体积。下面以流式 ASR 和可选 UI 为例。

    .product(name: "ParakeetStreamingASR", package: "speech-swift"),
    .product(name: "SpeechUI",             package: "speech-swift"),  // optional SwiftUI views
  4. 4三行代码转写音频

    导入模块后调用 fromPretrained() 加载模型,再用 transcribeAudio 把 16kHz 音频采样转成文本。

    import ParakeetStreamingASR
    
    let model = try await ParakeetStreamingASRModel.fromPretrained()
    let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)
  5. 5接入实时流式识别

    调用 transcribeStream 逐段获取识别结果,partial.isFinal 为 true 表示该句已最终确定,否则是临时结果。

    for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
        print(partial.isFinal ? "FINAL: \(partial.text)" : "... \(partial.text)")
    }
  6. 6配置国内镜像

    如果 huggingface.co 访问慢或被墙,设置 HF_ENDPOINT 环境变量改用镜像站点下载模型权重。

    export HF_ENDPOINT=https://hf-mirror.com

关键配置

配置项必填说明示例
HF_ENDPOINT否指定 HuggingFace 镜像地址,加快权重下载https://hf-mirror.com
QWEN3_CACHE_DIR否覆盖 CLI 默认的模型权重缓存目录/your/path/qwen3-cache
cacheDir:否Swift API 中覆盖权重缓存目录的参数cacheDir: /your/path/qwen3-cache
offlineMode否权重已缓存时跳过联网,所有 fromPretrained() 入口都支持offlineMode: true

如何确认成功

首次调用 fromPretrained() 会下载权重并缓存,随后 transcribeAudio 能返回识别文本且控制台无报错,即表示接入成功。

常见问题

Q:模型权重下载到哪里?

A:首次使用时会从 HuggingFace 下载并缓存到 ~/Library/Caches/qwen3-speech/,可用 QWEN3_CACHE_DIR(CLI)或 cacheDir:(Swift API)覆盖。

Q:国内下载很慢或失败怎么办?

A:设置环境变量 HF_ENDPOINT 指向镜像,例如 export HF_ENDPOINT=https://hf-mirror.com 后再运行下载。

Q:可以完全离线使用吗?

A:可以。权重已经缓存后,给所有 fromPretrained() 入口传 offlineMode: true 即可跳过网络请求。

Q:怎么只引入需要的能力?

A:每个模型都是独立的 SPM library(如 Qwen3ASR、KokoroTTS、SpeechVAD 等),在 Package.swift 里只声明用到的 product 即可,不用的不会引入。

Q:有现成的命令行工具吗?

A:README 中 Installation 章节为空,未给出 CLI 安装命令;顶部徽章指向 Homebrew 公式 speech,具体安装方式请以官网文档为准。

注意事项

  • README 的 Installation 章节为空,本文步骤基于 Quick start 与缓存配置章节,完整说明请查阅官网 soniqo.audio 与 docs/inference/cache-and-offline.md。
  • 全部推理在设备端完成:无需云端、无需 API Key,音频数据不会离开设备。
  • 代码示例中的音频变量(audioSamples / samples)需由你通过 AVFoundation 等自行采集,采样率按示例传 16000。
  • iOS 沙盒容器中的缓存路径与 macOS 不同,详见 docs/inference/cache-and-offline.md。

核心亮点

  • 基于 MLX 和 CoreML,充分利用 Apple Silicon 神经引擎,推理速度快
  • 覆盖 ASR、TTS、VAD、说话人分离等完整语音链路,开箱即用
  • 纯 Swift 实现,与 iOS/macOS 生态深度集成,开发体验友好

不足之处

  • 仅支持 Apple Silicon 设备,无法在旧款 Intel Mac 或非苹果平台使用
  • 文档和示例相对较少,社区生态尚在成长中

适用场景

  • 开发离线语音助手或智能家居控制应用
  • 构建实时会议记录与说话人分离工具
  • 为无障碍应用提供本地语音识别与合成能力

替代项目

whisper.cpp、Vosk、Sherpa-ONNX

上一篇:StreamSpeech

下一篇:botium-speech-processing

同类项目推荐

speech-to-phrase 开源

本地跑,只认你定义的短语,又快又准。

Fast and personalized local speech-to-text

★ 354 2026-10-04
yapsnap 开源

一条命令,把视频音频转成文字,不用显卡不用云

Transcribe any video URL or audio file into plaintext. No GPU. No cloud. One command···

★ 427 2026-09-24
PyAutoSRT 开源

拖入视频,自动生成原文+翻译字幕

PySimpleGUI based DESKTOP APP to AUTO GENERATE SUBTITLE FILE (using free Google Spee···

★ 191 2026-09-15
stt-server 开源

WebSocket 实时语音转文字,边说边出字,可换 ASR 后端

Real-time speech-to-text WebSocket server with pluggable ASR backends, energy-based ···

★ 106 2026-09-15
WhisperLive 开源

让 Whisper 实时转写,直播字幕、会议记录秒出

A nearly-live implementation of OpenAI's Whisper.

★ 4349 2026-08-09
easy-whisper-ui 开源

点点鼠标,把录音批量转成文字

Easy to use interface for the Whisper model optimized for all GPUs!

★ 588 2026-10-22
MiMo-V2.5-ASR 开源

多语言方言嘈杂环境也能转写的语音识别模型

Robust Speech Recognition Across Languages, Dialects, and Complex Acoustic Scenarios

★ 345 2026-11-03
Confucius4-R2T2 开源

边说边转文字,低延迟还不掉准确率

Confucius4-R2T2: A Low Latency and High Accuracy Real-Time Speech Recognition Model

★ 867 2026-10-01
SpeechKITT 开源

几行代码给网页加上语音识别按钮

A flexible GUI for Speech Recognition

★ 518 2026-11-03