通过使用“say”命令在macOS上启用文本转语音功能,提供对语音、语速、音量和音调等语音参数的广泛控制,从而实现可定制的听觉体验。
speech-processing
52 查看 · 2026-07-07 更新
简介
通过使用“say”命令在macOS上启用文本转语音功能,提供对语音、语速、音量和音调等语音参数的广泛控制,从而实现可定制的听觉体验。
简介
通过使用“say”命令在macOS上启用文本转语音功能,提供对语音、语速、音量和音调等语音参数的广泛控制,从而实现可定制的听觉体验。
say-mcp-server

这是一个使用 macOS 内置 say 命令提供文本转语音功能的 MCP 服务器。
要求
- macOS(使用内置的
say命令) - Node.js >= 14.0.0
配置
将以下内容添加到您的 MCP 设置配置文件中:
{ "mcpServers": { "say": { "command": "node", "args": ["/path/to/say-mcp-server/build/index.js"] } } }
安装
npm install say-mcp-server
工具
speak
speak 工具提供了访问 macOS 文本转语音功能的能力,并支持广泛的自定义选项。
基本用法
使用 macOS 的文本转语音功能大声朗读文本。
参数:
text(必需):要朗读的文本。支持:- 纯文本
- 基本标点符号用于停顿
- 换行符用于自然停顿
- [[slnc 500]] 表示 500ms 的静音
- [[rate 200]] 表示在文本中间改变速度
- [[volm 0.5]] 表示在文本中间改变音量
- [[emph +]] 和 [[emph -]] 用于强调
- [[pbas +10]] 用于调整音调
voice(可选):使用的语音(默认:"Alex")rate(可选):每分钟单词数的说话速度(默认:175,范围:1-500)background(可选):在后台运行语音以允许进一步的 MCP 交互(默认:false)
高级特性
- 语音调制:
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "[[volm 0.7]] This is quieter [[volm 1.0]] and this is normal [[volm 1.5]] and this is louder", voice: "Victoria" } });
- 动态速率变化:
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "Normal speed [[rate 300]] now speaking faster [[rate 100]] and now slower", voice: "Fred" } });
- 强调和音调:
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "[[emph +]] Important point! [[emph -]] [[pbas +10]] Higher pitch [[pbas -10]] Lower pitch", voice: "Samantha" } });
集成示例
- 与 Marginalia Search 结合使用:
// Search for a topic and have the results read aloud const searchResult = await use_mcp_tool({ server_name: "marginalia-mcp-server", tool_name: "search", arguments: { query: "quantum computing basics", count: 1 } }); await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: searchResult.results[0].description, voice: "Daniel", rate: 150 } });
- 与 YouTube 字幕结合使用:
// Read a YouTube video transcript const transcript = await use_mcp_tool({ server_name: "youtube-transcript", tool_name: "get_transcript", arguments: { url: "https://youtube.com/watch?v=example", lang: "en" } }); await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: transcript.text, voice: "Samantha", rate: 175 } });
- 多个动作的后台语音:
// Start long speech in background await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "This is a long speech that will run in the background...", voice: "Rocko (Italian (Italy))", rate: 69, background: true } }); // Immediately perform another action while speech continues await use_mcp_tool({ server_name: "marginalia-mcp-server", tool_name: "search", arguments: { query: "parallel processing" } });
- 与 Apple Notes 结合使用:
// Read notes aloud const notes = await use_mcp_tool({ server_name: "apple-notes-mcp", tool_name: "search-notes", arguments: { query: "meeting notes" } }); if (notes.length > 0) { await use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: notes[0].content, voice: "Karen", rate: 160 } }); }
示例:
use_mcp_tool({ server_name: "say", tool_name: "speak", arguments: { text: "Hello, world!", voice: "Victoria", rate: 200 } });
list_voices
列出系统上所有可用的文本转语音声音。
示例:
use_mcp_tool({ server_name: "say", tool_name: "list_voices", arguments: {} });
推荐的声音
| Voice | Language/Region | Intellectual Figure | Haiku | CLI Specification |
|---|---|---|---|---|
| Anna (Premium) | German | Emmy Noether | Symmetrie haucht Leben Algebras verborgne Form Abstraktion blüht Symmetry breathes life Algebra's hidden forms Abstraction blooms | -v "Anna (Premium)" |
| Emma (Premium) | Italian | Maria Adelaide Sneider | Algoritmi in danza Macchina sussurra dolce Il codice vive Algorithms dance Machine whispers secrets soft Code becomes alive | -v "Emma (Premium)" |
| Federica (Premium) | Italian | Pia Nalli | Teoremi fluenti Numeri danzano liberi Verità emerge Flowing theorems dance Numbers move in freedom's space Truth emerges pure | -v "Federica (Premium)" |
| Serena (Premium) | English (UK) | Bertha Swirles | Quantum waves ripple Through mathematical seas deep Truth's light emerges Quantum waves ripple Through mathematical seas deep Truth's light emerges | -v "Serena (Premium)" |
| Petra (Premium) | German | Ruth Moufang | Algebra spricht In Symmetrien versteckt Wahrheit erblüht Algebra speaks soft Hidden in symmetries pure Truth blooms anew here | -v "Petra (Premium)" |
| Yuna (Premium) | Korean | Hee Oh | 숨은 패턴 빛나고 마음의 방정식 핀다 지식 자라나 Hidden patterns gleam Mind's equations softly bloom Knowledge multiplies | -v "Yuna (Premium)" |
| Alva (Premium) | Swedish | Sonja Korovkin | Mönster flödar fritt Genom tankens labyrinter Visdom blomstrar här Patterns flowing free Through labyrinths of the mind Wisdom blooms right here | -v "Alva (Premium)" |
| Amélie (Premium) | French (Canada) | Sophie Germain | Nombres premiers murmurent Dansent entre les silences Symétrie s'ouvre Prime numbers whisper Dancing between the silence Symmetry unfolds | -v "Amélie (Premium)" |
| Ewa (Premium) | Polish | Maria Wielgus | Logiki korzenie Matematyczne krainy Myśl kiełkująca Logic's tender roots Mathematical landscapes Thought's seeds germinate | -v "Ewa (Premium)" |
| Kiyara (Premium) | Hindi | Shakuntala Devi | गणित की लय में अंक नृत्य करते हैं ज्ञान जगता है In rhythm of math Numbers dance their sacred steps Knowledge awakens | -v "Kiyara (Premium)" |
| Majed (Premium) | Arabic | Maha Al-Aswad | أرقام ترقص في فضاء اللانهاية الحقيقة تشرق Numbers dance freely In infinity's vast space Truth rises like dawn | -v "Majed (Premium)" |
| Tünde (Premium) | Hungarian | Julia Erdős | Számok táncolnak Végtelen térben szállnak Igazság virrad Numbers dance and soar Through infinite space they glide Truth dawns pure and bright | -v "Tünde (Premium)" |
| Fiona (Enhanced) | English (Scottish) | Mary Somerville | Highland mists reveal Mathematical mysteries Truth shines like the stars Highland mists reveal Mathematical mysteries Truth shines like the stars | -v "Fiona (Enhanced)" |
| Lesya (Enhanced) | Ukrainian | Olena Voinova | Тиша говорить Між зірками знання спить Думка проростає Silence speaks softly Knowledge sleeps among the stars Thought begins to grow | -v "Lesya (Enhanced)" |
| Carmit (Enhanced) | Hebrew | Tali Seror | מילים נושמות בשקט בין שורות של דממה שיר מתעורר Words breathe silently Between lines of deep stillness Poem awakening | -v "Carmit (Enhanced)" |
| Milena (Enhanced) | Russian | Olga Ladyzhenskaya | Память шепчет нам Уравнения текут Истина молчит Memory whispers Equations flow like rivers Truth speaks silently | -v "Milena (Enhanced)" |
| Katya (Enhanced) | Russian | Sofia Kovalevskaya | Числа танцуют В пространстве бесконечном Истина цветёт Numbers dance freely In space of infinity Truth blooms like a flower | -v "Katya (Enhanced)" |
| Damayanti (Enhanced) | Indonesian | Sri Pekerti | Angka menari Dalam ruang tak batas Kebenaran tumbuh Numbers dance gently In boundless space they flutter Truth grows like new leaves | -v "Damayanti (Enhanced)" |
| Dariush (Enhanced) | Persian | Maryam Mirzakhani | اعداد می رقصند در فضای بی پایان حقیقت می روید Numbers dance with grace In endless space they traverse Truth springs forth anew | -v "Dariush (Enhanced)" |
| Rocko (Italian) | Italian | Astro Boy (Tetsuwan Atomu) Italian dub | Robot di metallo Cuore umano batte forte Pace nel futuro Metal robot form Human heart beats strong within Peace in future dawns | -v "Rocko (Italian (Italy))" |
| Rocko (Italian) | Italian | Jeeg Robot d'Acciaio (Kōtetsu Jeeg) | Acciaio lucente Protettore dei deboli Vola nel cielo Shining steel warrior Protector of the helpless Soars through the heavens | -v "Rocko (Italian (Italy))" |
| Rocko (Italian) | Italian | Numero 5 (Short Circuit) | Input infinito La coscienza si risveglia Vita artificiale Infinite input Consciousness awakening Artificial life | -v "Rocko (Italian (Italy))" |
| Binbin (Enhanced) | Chinese (Mainland) | Li Shanlan | 算术之道流 数理演绎真理 智慧绽放 Arithmetic flows Logic unfolds truth's pattern Wisdom blossoms bright | -v "Binbin (Enhanced)" |
| Han (Premium) | Chinese (Mainland) | Chen Jingrun | 素数之舞动 哥德巴赫猜想 真理永恒 Prime numbers dancing Goldbach's conjecture whispers Truth eternal flows | -v "Han (Premium)" |
| Lilian (Premium) | Chinese (Mainland) | Hua Luogeng | 数论之光芒 解析延续美 智慧升华 Number theory shines Analysis extends grace Wisdom ascends pure | -v "Lilian (Premium)" |
| Meijia | Chinese (Taiwan) | Sun-Yung Alice Chang | 幾何之美現 曲率流動不息 空間展開 Geometry shows Curvature flows endlessly Space unfolds anew | -v "Meijia" |
| Sinji (Premium) | Chinese (Hong Kong) | Shing-Tung Yau | 流形之奧秘 卡拉比空間動 維度交織 Manifolds reveal Calabi spaces in flow Dimensions weave truth | -v "Sinji (Premium)" |
| Tingting | Chinese (Mainland) | Wang Zhenyi | 星辰轨迹明 天文数学融 智慧闪耀 Starlit paths shine bright Astronomy meets numbers Wisdom radiates | -v "Tingting" |
| Yue (Premium) | Chinese (Mainland) | Chern Shiing-shen | 微分几何 纤维丛中寻真 本质显现 Differential forms In fiber bundles seek truth Essence emerges | -v "Yue (Premium)" |
配置
将以下内容添加到您的 MCP 设置配置文件中:
{ "mcpServers": { "say": { "command": "node", "args": ["/path/to/say-mcp-server/build/index.js"] } } }
要求
- macOS(使用内置的
say命令) - Node.js >= 14.0.0
贡献者
- Barton Rhodes (@bmorphism) - barton@vibes.lol
许可证
MIT
工具列表
-
speak: Use macOS text-to-speech to speak text aloud
-
list_voices: List available text-to-speech voices
服务配置
[{'mcpServers': {'say': {'args': ['/path/to/say-mcp-server/build/index.js'], 'command': 'node'}}}, {'mcpServers': {'say': {'args': ['/path/to/say-mcp-server/build/index.js'], 'command': 'node'}}}]
来源
- 来源:github
- 链接:https://github.com/bmorphism/say-mcp-server