
语音音频AI 应用桌面应用CLI插件系统【免费下载链接】typewhisper-macLocal speech-to-text for macOS on-device AI, fully private, optional cloud项目地址https://gitcode.com/gh_mirrors/ty/typewhisper-mac点击查看免费下载TypeWhisper 是一款运行在 macOS 上的本地语音转文字Speech-to-Text工具主打设备端 AI、完全私密、可选云端。通过它的 Swift 插件框架TypeWhisper Plugin SDK你可以按下面这份完整教程从创建工程到发布上架5 步开发出自己的第一个 TypeWhisper 插件 1️⃣ TypeWhisper 插件能做什么一个插件本质上是一个 macOS Bundle通过 TypeWhisperPluginSDK一个标准 Swift Package与主程序通信。SDK 定义了 5 种插件类型覆盖语音转文字应用的主要扩展点插件类型协议名典型用途转录引擎TranscriptionEnginePlugin接入新的语音转文字模型/云服务大模型LLMProviderPlugin用 LLM 做文本润色、总结、改写语音合成TTSProviderPlugin为朗读反馈提供新的 TTS 声音后处理器PostProcessorPlugin转录完成后自动清理/转换文本自定义动作ActionPlugin把转录结果发送到第三方服务一个插件类还可以同时实现多个协议比如一个插件既是转录引擎又提供 LLM相关协议定义在 TypeWhisperPlugin.swift。 想快速看懂一个真实插件推荐从最简单的 FillerWordsPlugin.swift 读起——它用不到 30 行代码就实现了自动去除语气词的后处理器。2️⃣ 环境准备Xcode 克隆仓库最低要求来自 README.mdmacOS 14.0Swift 6.0Xcode 16TypeWhisper 1.7.0新插件发布的最低宿主版本git clone https://gitcode.com/gh_mirrors/ty/typewhisper-mac克隆后打开TypeWhisper.xcodeprojSDK 的所有公共 API 都集中在 TypeWhisperPluginSDK/Sources/TypeWhisperPluginSDK/ 目录下包括HostServices宿主服务、PluginManifest清单模型、TypeWhisperEvent事件总线等核心文件直接查源码即可。3️⃣ 三步创建插件工程Bundle 目标 清单 代码骨架第一步创建 Bundle 目标在 Xcode 中执行File New Target macOS Bundle将 Product Name 设为你的插件名如MyPlugin再把TypeWhisperPluginSDK包添加为依赖——包定义见 Package.swift注意它声明了 macOS 14 平台和动态库产物。第二步编写 manifest.json 清单在 Bundle 的Contents/Resources/下创建manifest.json它是 TypeWhisper 识别插件的身份证{ id: com.yourname.myplugin, name: My Plugin, version: 1.0.0, minHostVersion: 1.7.0, sdkCompatibilityVersion: v1, minOSVersion: 14.0, author: Your Name, principalClass: MyPlugin }三个字段最容易踩坑id必须是唯一的反向域名格式com.typewhisper命名空间保留给官方插件principalClass必须与代码里objc(ClassName)的类名完全一致sdkCompatibilityVersion市场/外部插件必须与当前 SDK 兼容线一致目前为v1发布前可用仓库自带脚本校验清单避免构建被拒绝python3 scripts/validate_plugin_release_manifest.py path/to/manifest.json --version 1.0.0第三步编写最小插件类一个最简后处理器插件长这样import Foundation import SwiftUI import TypeWhisperPluginSDK objc(MyPlugin) final class MyPlugin: NSObject, PostProcessorPlugin, unchecked Sendable { static let pluginId com.yourname.myplugin static let pluginName My Plugin private var host: HostServices? required override init() { super.init() } func activate(host: HostServices) { self.host host } func deactivate() { host nil } var processorName: String { My Processor } var priority: Int { 500 } // 数字越小越先执行 MainActor func process(text: String, context: PostProcessingContext) async throws - String { return text.uppercased() } }如果你的插件需要用户配置比如填 API Key只需实现settingsView返回一个 SwiftUI 视图用户点击设置里的齿轮图标时就会弹出该界面官方示例可参考 FillerWordsPlugin 的设置视图。4️⃣ 与宿主交互HostServices 提供的核心能力插件激活时会收到一个HostServices实例这是你与 TypeWhisper 主程序交互的唯一入口能力说明安全存储storeSecret/loadSecret插件独立的 Keychain存 API Key用户偏好setUserDefault/userDefault插件独立的 UserDefaults文件存储pluginDataDirectory~/Library/Application Support/TypeWhisper/PluginData/插件ID/应用上下文activeAppName、activeAppBundleId知道用户当前在哪个 App 说话事件总线eventBus.subscribe监听转录完成、录音开始、文本插入等事件工作流availableWorkflows只读访问用户自定义的转录工作流以 OpenAI 兼容 API 为例SDK 还内置了PluginOpenAITranscriptionHelper转录、PluginOpenAIChatHelper聊天、PluginWavEncoder音频编码等助手类详见 SDK 文档 的 Built-in Helpers 章节——大多数云端插件不需要自己写一行 HTTP 请求。5️⃣ 构建安装3 种方式让插件生效构建成功后.bundle产物有三种安装方式从文件安装设置 → Discover plugins →Install from File...选择.bundle推荐日常使用手动复制拷贝到~/Library/Application Support/TypeWhisper/Plugins/符号链接开发期最快ln -s /path/to/DerivedData/.../MyPlugin.bundle ~/Library/Application\ Support/TypeWhisper/Plugins/改完代码重新构建即自动生效安装后在设置中启用插件即可。主程序加载插件的完整逻辑版本兼容检查、架构匹配、类加载位于 PluginManager.swift如果插件声明的minOSVersion或架构不满足TypeWhisper 会跳过加载并给出原因。6️⃣ 测试与发布到插件市场写测试SDK 提供了 PluginTestSupport.swift 测试工具集仓库中每个插件都带有Tests/目录例如 FillerWordsPlugin 的测试可以直接模仿。发布到社区市场流程见 README提交 PR把插件源码放入TypeWhisperPluginSDK/Plugins/你的插件Plugin/并添加 Bundle 目标在 PluginRegistry/community-v1/ 目录添加以插件 ID 命名的 JSON 注册表条目使用自己的 ID 命名空间和作者名com.typewhisper与作者TypeWhisper为官方保留源码评审通过后由维护者运行发布工作流完成构建、签名并写入市场 feed常见问题速答 插件没被加载先检查principalClass是否与objc类名一致再看minHostVersion/minOSVersion是否满足当前系统。API Key 存哪里用host.storeSecret它会进入插件作用域的 Keychain绝不写入明文文件。本地模型插件怎么写参考 CanaryPlugin基于 MLX 的本地转录引擎它在清单中用supportedArchitectures声明了仅支持 Apple Silicon。后处理器执行顺序怎么定用priority数值内置 LLM300、片段500、词典600数字越小越先执行。至此你已经完成了从环境搭建、工程创建、宿主交互到上架发布的完整链路。打开 Xcode复制一份 FillerWordsPlugin 作为起点改几行代码你的第一个 TypeWhisper 插件就能跑起来了 赞分享语音音频AI 应用桌面应用CLI插件系统【免费下载链接】typewhisper-macLocal speech-to-text for macOS on-device AI, fully private, optional cloud项目地址https://gitcode.com/gh_mirrors/ty/typewhisper-mac点击查看免费下载相关推荐终极指南如何为Decky Loader开发第一个插件从零开始的完整教程终极指南如何为Decky Loader开发第一个插件从零开始的完整教程 Decky Loader是Steam Deck上最强大的插件加载器它让用户能够轻后端前端插件系统重新定义你的宝可梦冒险Universal Pokemon Randomizer ZX深度探索重新定义你的宝可梦冒险Universal Pokemon Randomizer ZX深度探索 你是否曾想过那些熟悉的宝可梦游戏能否带来全新的体验Unive开发工具React Native Toast Message TypeScript类型定义详解完整的类型安全实现React Native Toast Message TypeScript类型定义详解完整的类型安全实现 React Native Toast Message创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考