moonshine-ai/moonshine
摘要
Moonshine Voice 是一个开源 AI 工具包,用于构建实时、设备端的语音应用,提供语音转文字、文字转语音和对话代理功能,具备最先进的准确性。
极低延迟的语音转文字、意图识别和文字转语音,用于构建语音代理和界面。
查看缓存全文
缓存时间: 2026/07/20 15:26
moonshine-ai/moonshine 来源:https://github.com/moonshine-ai/moonshine Moonshine Voice Logo # Moonshine Voice 面向所有人的语音接口 - 快速开始 - 何时选择 Moonshine 而非 Whisper? - 使用库 - 语音转文字 - 文字转语音 - 对话式代理 - 模型 - API 参考 - 支持 - 路线图 - 致谢 - 许可证 Moonshine (https://moonshine.ai) Voice 是一个面向开发者的开源 AI 工具包,用于构建实时语音代理和应用程序。 - 一切均在设备上运行,因此快速、私密,且无需账户、信用卡或 API 密钥。 - 框架和模型针对实时流式应用进行了优化,通过在用户仍在说话时完成大量工作,提供低延迟响应。 - 所有语音转文字模型均基于我们前沿的研究 (https://arxiv.org/abs/2602.12241) 并从零开始训练,因此我们能够在高端提供比 Whisper Large V3 更高的准确率 (https://huggingface.co/spaces/hf-audio/open_asr_leaderboard),直到适用于受限部署的 微型 1MB 模型。 - 易于跨平台集成,同一库可在 Python、iOS、Android、MacOS、Linux、Windows、Raspberry Pi、物联网设备 (https://www.linkedin.com/posts/petewarden_most-of-the-recent-news-about-ai-seems-to-activity-7384664255242932224-v6Mr/)、微控制器、DSP 和可穿戴设备上运行。 - 包含电池。其高级 API 为常见任务提供完整解决方案,如转录、文字转语音、语音克隆、说话人识别(说话人分离)、命令识别和对话式代理,因此您只需一个库即可构建语音应用。 - 支持多种语言,包括英语、西班牙语、普通话、日语、韩语、越南语、乌克兰语和阿拉伯语(STT),以及英语、西班牙语、阿拉伯语、德语、法语、印地语、意大利语、日语、韩语、荷兰语、葡萄牙语、俄语、土耳其语、乌克兰语、越南语和普通话(TTS)。 ## 快速开始 加入我们的 Discord 社区以获得实时支持 (https://discord.gg/27qp9zSRXF)。 针对 iOS、Android、macOS、Windows 和 Raspberry Pi 的示例应用已发布在 GitHub Releases (https://github.com/moonshine-ai/moonshine/releases/latest) 上,作为独立存档(主要是 {platform}-{Project}.tar.gz,与 examples/ 下的文件夹名称匹配;Windows 还提供了 moonshine-voice-windows-x86_64.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/moonshine-voice-windows-x86_64.tar.gz) 用于 C++ 示例)。请参阅示例部分以获取完整的发布下载列表。 ### Python bash pip install moonshine-voice moonshine-voice mic --language en 监听麦克风并实时更新转录文本。 bash moonshine-voice intent 监听用户定义的动作短语,例如“打开灯”,使用语义匹配识别自然语言变体。 更多信息,请查看我们的“入门”Colab 笔记本 (https://bit.ly/moonshine-colab) 和视频 (https://www.youtube.com/watch?v=WH-AGvHmtoM)。 bash moonshine-voice tts --language en_us --text "Hello world" 合成并朗读文本。 ### iOS 下载 github.com/moonshine-ai/moonshine/releases/latest/download/ios-Transcriber.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/ios-Transcriber.tar.gz),解压,然后在 Xcode 中打开 Transcriber/Transcriber.xcodeproj 项目。 ### Android 下载 github.com/moonshine-ai/moonshine/releases/latest/download/android-Transcriber.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/android-Transcriber.tar.gz),解压,然后在 Android Studio 中打开 Transcriber 文件夹。 ### Linux 下载 (https://github.com/moonshine-ai/moonshine/archive/refs/heads/main.zip) 或 git clone 此仓库,然后运行: bash cd core mkdir -p build cd build cmake .. cmake --build . ./moonshine-cpp-test ### MacOS Moonshine Voice 同时支持 Apple Silicon (arm64) 和 Intel (x86_64) Mac。 下载 github.com/moonshine-ai/moonshine/releases/latest/download/macos-MicTranscription.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/macos-MicTranscription.tar.gz),解压,然后在 Xcode 中打开 MicTranscription/MicTranscription.xcodeproj 项目。 ### Windows 下载 github.com/moonshine-ai/moonshine/releases/latest/download/windows-cli-transcriber.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/windows-cli-transcriber.tar.gz),解压,然后在 Visual Studio 中打开 cli-transcriber\cli-transcriber.vcxproj 项目。这是一个自包含的存档,包含库和模型,因此 Ctrl+Shift+B 或 F7 将生成可执行文件。 ### Raspberry Pi 您需要插入 USB 麦克风以获取音频输入,但 Python pip 包已针对 Pi 进行了优化,因此您可以运行: bash sudo pip install --break-system-packages moonshine-voice moonshine-voice mic --language en 我在 YouTube 上录制了一个屏幕录像 (https://www.youtube.com/watch?v=NNcqx1wFxl0) 以帮助您入门。您也可以下载 github.com/moonshine-ai/moonshine/releases/latest/download/raspberry-pi-my-dalek.tar.gz (https://github.com/moonshine-ai/moonshine/releases/latest/download/raspberry-pi-my-dalek.tar.gz) 以获取一些有趣且特定于 Pi 的示例。README 包含有关使用虚拟环境进行 Python 安装的信息(如果您不想使用 --break-system-packages)。 您可以查看 github.com/moonshine-ai/pi-help-bot (https://github.com/moonshine-ai/pi-help-bot) 以获取更高级的示例。 ## 何时选择 Moonshine 而非 Whisper? TL;DR - 当您处理实时语音时。 | 模型 | WER | 参数量 | MacBook Pro | Linux x86 | R. Pi 5 | | ––––––––––––– | —— | ———— | ———– | ——— | ——— | | Moonshine Medium Streaming | 6.65% | 2.45亿 | 107ms | 269ms | 802ms | | Whisper Large v3 | 7.44% | 15亿 | 11,286ms | 16,919ms | N/A | | Moonshine Small Streaming | 7.84% | 1.23亿 | 73ms | 165ms | 527ms | | Whisper Small | 8.59% | 2.44亿 | 1940ms | 3,425ms | 10,397ms | | Moonshine Tiny Streaming | 12.00% | 3400万 | 34ms | 69ms | 237ms | | Whisper Tiny | 12.81% | 3900万 | 277ms | 1,141ms | 5,863ms | 参见基准测试了解这些数字的测量方式。 OpenAI 发布其 Whisper 模型系列 是开源语音转文字的重大进步。它们提供了多种尺寸,允许开发者在计算和存储空间与准确率之间进行权衡,以适应其应用。其最大的模型,如 Large v3,准确率得分高于 Google 或 Apple 等大型科技公司之外的任何可用模型。在 Moonshine,我们是 Whisper 的早期热情采用者,并且仍然是这些模型以及基于它们构建的出色框架(如 FasterWhisper (https://github.com/SYSTRAN/faster-whisper) 等)的忠实粉丝。然而,在构建需要实时语音接口的应用时,我们发现需要 Whisper 无法提供的功能: - Whisper 始终在 30 秒的输入窗口上运行。当批量处理音频时,这不是问题,通常可以向前查看文件并找到大约 30 秒的语音块来应用。语音接口无法向前查看以从其输入流中创建更大的块,而且短语很少超过五到十秒。这意味着编码器和解码器中存在大量用于零填充的浪费计算,从而导致返回结果的延迟更长。由于任何接口最重要的要求之一是响应性(通常定义为低于 200ms 的延迟),即使在有计算资源的平台上,这也会损害用户体验,并在资源受限的设备上使其无法使用。 - Whisper 不缓存任何内容。语音接口的另一个常见要求是,当用户说话时,它们显示反馈,以便用户知道应用程序正在监听和理解他们。这意味着在说话过程中重复调用语音转文字模型。大部分音频输入是相同的,只在末尾增加了一小段。即使大部分输入是恒定的,Whisper 每次都会从头开始,在之前见过的音频上执行大量冗余工作。与固定输入窗口一样,这种不必要的延迟会损害用户体验。 - Whisper 对许多语言的支持较差。Whisper 的多语言支持是一项了不起的工程壮举,并证明了一个模型可以处理多种语言,甚至提供翻译。来自 OpenAI 的这张图表(原始数据在附录 D-2.4 (https://cdn.openai.com/papers/whisper.pdf) 中)显示了使用非常大的 15 亿参数模型时词错误率 (WER) 的下降情况。 语言图表 列出了 82 种语言,但只有 33 种语言的 WER 低于 20%(我们认为可用的水平)。对于常用于边缘设备的 Base 模型大小,只有 5 种语言的 WER 低于 20%。像韩语和日语这样的亚洲语言是拥有大量技术创新的大型市场的母语,但 Whisper 在大多数应用中无法提供足够好的准确率。通过 OpenAI 的云 API 可用的专有内部版本 Whisper 似乎提供了更好的准确率,但不能作为开放模型使用。 - 碎片化的边缘支持。围绕 Whisper 发展了一个出色的生态系统,有许多成熟的框架可用于部署模型。然而,这些通常侧重于桌面级机器和操作系统。有一些项目可以在 iOS、Android 或 Raspberry Pi OS 等边缘平台上使用,但它们往往具有不同的接口、功能和优化级别。这使得构建需要在各种设备上运行的应用变得不必要地困难。 所有这些限制促使我们创建了自己的模型系列,以更好地满足实时语音接口的需求。这花费了一些时间,因为可用的开源语音数据集的总大小与网络衍生的文本数据量相比微不足道,但经过大量的数据收集工作,我们成功发布了第一代 Moonshine 模型 (https://arxiv.org/abs/2410.15608)。这些模型消除了固定输入窗口的限制以及其他一些架构改进,并在实时语音应用中提供了比 Whisper 显著更低的延迟,通常快 5 倍或更多。然而,我们不断遇到需要在更受限的平台上实现更低延迟的应用。我们还希望提供比初始模型最高端(相当于 Base)更高的准确率。这促使我们推出了第二代 Moonshine 模型,其提供: - 灵活的输入窗口。您可以提供任意长度的音频(尽管我们建议保持在 30 秒以下),模型将仅对该输入进行计算,无需零填充。这为我们带来了显著的延迟优势。 - 用于流式传输的缓存。我们的模型现在支持随时间增量添加音频,并缓存输入编码和解码器部分状态,从而我们能够跳过更多计算,大幅降低延迟。 - 特定语言模型。我们已经收集了数据并针对多种语言训练了模型,包括阿拉伯语、日语、韩语、西班牙语、乌克兰语、越南语和中文。正如我们在《Moonshine 口味》论文 (https://arxiv.org/abs/2509.02523) 中讨论的那样,我们发现如果将模型限制为仅专注于一种语言,与训练一个跨多种语言的模型相比,在相同尺寸和计算量下可以获得更高的准确率。 - 跨平台库支持。我们自己构建应用,需要能够在 Linux、MacOS、Windows、iOS 和 Android 上部署这些模型,并且能够从 Python、Swift、Java 和 C++ 等语言中使用。为了支持这一点,我们设计了一个可移植的 C++ 核心库,处理所有处理,使用 OnnxRuntime 在系统间实现良好性能,然后为所需的高级语言构建原生接口。这允许开发者学习一个 API,然后几乎在任何他们希望运行的地方部署它。 - 比 Whisper V3 Large 更好的准确率。在 HuggingFace 的 OpenASR 排行榜 (https://huggingface.co/spaces/hf-audio/open_asr_leaderboard) 上,我们最新的英语流式模型 Medium Streaming 实现了比 OpenAI 最准确的 Whisper 模型更低的词错误率。尽管 Moonshine 版本使用 2.5 亿参数,而 Large v3 使用 15 亿参数,这使得它在边缘部署更容易。 希望这能让你对 Moonshine 与 Whisper 的对比有一个清晰的认识。如果你在云中使用 GPU 批量处理数据,吞吐量最重要,那么 Whisper(或 Nvidia 的替代方案如 Parakeet)提供了批处理等优势,但我们相信在实时语音方面我们是无可匹敌的。我们构建了我们最初开始构建语音接口应用时所希望拥有的框架和模型,因此如果你正在处理实时语音输入,试试 Moonshine。 ## 使用库 Moonshine API 旨在处理捕获和转录实时语音的细节,为应用程序开发者提供专注于可操作事件的高级 API。我将使用 Python 来说明其工作原理,但该 API 在所有支持的语言中保持一致。 - 架构 - 概念 - 开始使用转录 - 转录事件流程 - 开始使用对话式代理 - 代理设置 - 开始使用文字转语音 - 语音样本 - ZipVoice - Kokoro - Piper TTS - 将字素转换为音素 - 示例 - 将库添加到您自己的应用 - Python - iOS 或 MacOS - Android - Windows - 调试 - 控制台日志 - 输入保存 - API 调用日志记录 - 从源码构建 - Cmake - 语言绑定 - 移植 - 下载模型 - 语音转文字模型 - 意图识别模型 - 文字转语音模型 - 基准测试 ### 架构 我们的目标是构建一个任何开发者都可以直接上手的框架,即使之前没有语音技术经验。我们抽象了许多不必要的细节,并提供了一个简单的接口,让您可以专注于构建应用,这体现在我们的系统架构中。 基本流程是: - 创建一个 Transcriber 或 IntentRecognizer 对象,取决于您想要被说出的文本,还是只想了解用户已请求了一个动作。 - 附加一个 EventListener,当特定事件发生时被调用。
相似文章
Moonshine:用于实时转录和语音命令的语音识别
Moonshine 提出了一系列用于语音识别的编码器-解码器 Transformer 模型,这些模型采用了旋转位置编码(RoPE),专为实时转录和语音命令优化。与 Whisper tiny.en 相比,计算量减少了 5 倍,而词错误率没有增加。
为Windows打造了一款本地语音AI,支持任意语言对话。开源,自带密钥。
Shadow AI 是一款开源的、以语音为先的 Windows AI 伴侣,支持多语言对话、网页搜索、记忆和提醒功能,基于 Gemini API。它本地运行,需要个人 API 密钥。
jamiepine/voicebox
Voicebox 是一个开源的、本地优先的 AI 语音工作室,支持语音克隆、语音生成、听写和 AI 代理集成,提供隐私保护和多引擎 TTS 支持。
月光之味:面向边缘设备的小型专用ASR模型
本文介绍了“月光之味”(Flavors of Moonshine),一套面向边缘设备的小型专用ASR模型。作者证明,在人类标注、伪标注和合成数据的平衡混合上训练的单一语言模型,优于Whisper等更大的多语言模型,在小型模型中实现了最先进的错误率,并实现了对低资源语言的设备端ASR。
Sun
Sun 是一款为 AI 智能体设计的协作语音 API,使基于智能体的应用具备语音能力。