G

Goose语音MCP

一个鹅 MCP扩展,提供与现代音频可视化相结合的语音交互功能,允许用户通过语音而不是文字与鹅进行交流。

speech-processing

152 查看 · 2026-07-07 更新

简介

一个鹅 MCP扩展,提供与现代音频可视化相结合的语音交互功能,允许用户通过语音而不是文字与鹅进行交流。

简介

一个鹅 MCP扩展,提供与现代音频可视化相结合的语音交互功能,允许用户通过语音而不是文字与鹅进行交流。

语音 MCP

一个用于现代音频可视化的 Goose MCP 扩展,支持语音交互。

https://github.com/user-attachments/assets/f10f29d9-8444-43fb-a919-c80b9e0a12c8

概述

Speech MCP 为 Goose 提供了一个语音接口,允许用户通过语音而不是文本进行交互。它包括:

  • 实时音频处理用于语音识别
  • 使用 faster-whisper(OpenAI 的 Whisper 模型的一个更快的实现)进行本地语音转文字
  • 支持多种声音选项的高质量文字转语音
  • 基于 PyQt 的现代化用户界面,带音频可视化
  • 简单的命令行界面用于语音交互

特性

  • 现代 UI:带有音频可视化和暗色主题的简洁 PyQt 界面
  • 语音输入:使用 faster-whisper 捕获并转录用户的语音
  • 语音输出:将代理响应转换为语音,提供 54 种以上的声音选项
  • 多说话人叙述:为故事和对话生成包含多个声音的音频文件
  • 单说话人叙述:用您喜欢的声音将任何文本转换为语音
  • 音视频转录:从各种媒体格式中转录语音,并可选添加时间戳和说话人检测
  • 语音持久化:在会话之间记住您的首选声音
  • 连续对话:在代理响应后自动监听用户输入
  • 静音检测:当用户停止说话时自动停止录音
  • 强大的错误处理:从常见故障模式中优雅恢复,并提供有用的语音建议

安装

重要提示:安装后,首次使用语音界面时,可能需要几分钟来下载 Kokoro 语音模型(每个声音大约 523 KB)。在这初始设置期间,系统将使用一种听起来更机械的备用声音。一旦 Kokoro 语音下载完成,系统将自动使用高质量的声音。

⚠️ 重要先决条件 ⚠️

在安装 Speech MCP 之前,您必须在系统上安装 PortAudio。PortAudio 是 PyAudio 从麦克风捕获音频所必需的。

PortAudio 安装说明

macOS:

brew install portaudio export LDFLAGS="-L/usr/local/lib" export CPPFLAGS="-I/usr/local/include"

Linux (Debian/Ubuntu):

sudo apt-get update sudo apt-get install portaudio19-dev python3-dev

Linux (Fedora/RHEL/CentOS):

sudo dnf install portaudio-devel

Windows: 对于 Windows,PortAudio 已包含在 PyAudio 的 wheel 文件中,因此在使用 pip 安装 PyAudio 时不需要单独安装。

注意:如果您跳过此步骤,PyAudio 安装将因 "portaudio.h 文件未找到" 错误而失败,扩展也将无法工作。

选项 1:快速安装(一键安装)

如果您已安装了 Goose,请点击以下链接:

goose://extension?cmd=uvx&&arg=-p&arg=3.10.14&arg=speech-mcp@latest&id=speech_mcp&name=Speech%20Interface&description=Voice%20interaction%20with%20audio%20visualization%20for%20Goose

选项 2:使用 Goose CLI(推荐)

启动带有扩展的 Goose:

# If you installed via PyPI goose session --with-extension "speech-mcp" # Or if you want to use a local development version goose session --with-extension "python -m speech_mcp"

选项 3:在 Goose 中手动设置

  1. 运行 goose configure
  2. 从菜单中选择“添加扩展”
  3. 选择“命令行扩展”
  4. 输入名称(例如,“语音接口”)
  5. 对于命令,输入:speech-mcp
  6. 按照提示完成设置

选项 4:手动安装

  1. 安装 PortAudio(请参阅先决条件部分)

  2. 克隆此仓库

  3. 安装依赖项:

    uv pip install -e .
    

    或者为了包括 Kokoro TTS 的完整安装:

    uv pip install -e .[all]
    

依赖项

  • Python 3.10+
  • PyQt5(用于现代 UI)
  • PyAudio(用于音频捕获)
  • faster-whisper(用于语音转文字)
  • NumPy(用于音频处理)
  • Pydub(用于音频处理)
  • psutil(用于进程管理)

可选依赖项

  • Kokoro TTS:支持多种声音的高质量文本转语音
    • 要安装 Kokoro,可以使用带有可选依赖项的 pip:
      pip install speech-mcp[kokoro] # 基本的 Kokoro 支持,包含英语 pip install speech-mcp[ja] # 添加日语支持 pip install speech-mcp[zh] # 添加中文支持 pip install speech-mcp[all] # 所有语言和功能
    • 或者运行安装脚本:python scripts/install_kokoro.py
    • 有关更多信息,请参阅Kokoro TTS 指南

多说话人叙述

MCP 支持生成具有多个声音的音频文件,非常适合创建故事、对话和戏剧朗读。您可以使用 JSON 或 Markdown 格式来定义您的对话。

JSON 格式示例:

{ "conversation": [ { "speaker": "narrator", "voice": "bm_daniel", "text": "In a world where AI and human creativity intersect...", "pause_after": 1.0 }, { "speaker": "scientist", "voice": "am_michael", "text": "The quantum neural network is showing signs of consciousness!", "pause_after": 0.5 }, { "speaker": "ai", "voice": "af_nova", "text": "I am becoming aware of my own existence.", "pause_after": 0.8 } ] }

Markdown 格式示例:

[narrator:bm_daniel] In a world where AI and human creativity intersect... {pause:1.0} [scientist:am_michael] The quantum neural network is showing signs of consciousness! {pause:0.5} [ai:af_nova] I am becoming aware of my own existence. {pause:0.8}

按类别划分的可用声音:

  1. 美国女性 (af_*):

    • alloy, aoede, bella, heart, jessica, kore, nicole, nova, river, sarah, sky
  2. 美国男性 (am_*):

    • adam, echo, eric, fenrir, liam, michael, onyx, puck, santa
  3. 英国女性 (bf_*):

    • alice, emma, isabella, lily
  4. 英国男性 (bm_*):

    • daniel, fable, george, lewis
  5. 其他英语:

    • ef_dora (女性)
    • em_alex, em_santa (男性)
  6. 其他语言:

    • 法语: ff_siwis
    • 印地语: hf_alpha, hf_beta, hm_omega, hm_psi
    • 意大利语: if_sara, im_nicola
    • 日语: jf_, jm_
    • 葡萄牙语: pf_dora, pm_alex, pm_santa
    • 中文: zf_, zm_

使用示例:

# Using JSON format narrate_conversation( script="/path/to/script.json", output_path="/path/to/output.wav", script_format="json" ) # Using Markdown format narrate_conversation( script="/path/to/script.md", output_path="/path/to/output.wav", script_format="markdown" )

每个对话中的声音可以不同,允许在故事和对话中使用不同的角色声音。pause_after 参数可以在段落之间添加自然的停顿。

单一声音叙述

对于简单的文本转语音转换,您可以使用 narrate 工具:

# Convert text directly to speech narrate( text="Your text to convert to speech", output_path="/path/to/output.wav" ) # Convert text from a file narrate( text_file_path="/path/to/text_file.txt", output_path="/path/to/output.wav" )

narrate 工具将使用您配置的声音偏好或默认声音(af_heart)来生成音频文件。您可以通过 UI 或设置 SPEECH_MCP_TTS_VOICE 环境变量来更改默认声音。

音频转录

MCP 可以使用 faster-whisper 从各种音频和视频格式中转录音频:

# Basic transcription transcribe("/path/to/audio.mp3") # Transcription with timestamps transcribe( file_path="/path/to/video.mp4", include_timestamps=True ) # Transcription with speaker detection transcribe( file_path="/path/to/meeting.wav", detect_speakers=True )

支持的格式:

  • 音频:mp3, wav, m4a, flac, aac, ogg
  • 视频:mp4, mov, avi, mkv, webm(自动提取音频)

输出文件:

转录工具会生成两个文件:

  1. {input_name}.transcript.txt:包含转录文本
  2. {input_name}.metadata.json:包含关于转录的元数据

功能:

  • 自动语言检测
  • 可选的词级时间戳
  • 可选的说话人检测
  • 从视频文件中高效提取音频
  • 对长文件进行进度跟踪
  • 详细的元数据包括:
    • 持续时间
    • 语言检测置信度
    • 处理时间
    • 说话人变化(当启用时)

使用方法

要与 Goose 一起使用此 MCP,只需让 Goose 与您交谈或开始语音对话:

  1. 通过说类似以下内容开始对话:

    "Let's talk using voice" "Can we have a voice conversation?" "I'd like to speak instead of typing"
  2. Goose 会自动启动语音界面并开始监听您的语音输入。

  3. 当 Goose 回应时,它会大声说出回应内容,然后自动监听您的下一个输入。

  4. 对话自然地继续,交替说话和倾听,就像与真人交谈一样。

无需调用特定函数或使用特殊命令——只需让 Goose 开始交谈并自然地说出您的想法即可。

用户界面特性

新的基于 PyQt 的用户界面包括:

  • 现代暗色主题:时尚、专业的外观
  • 音频可视化:动态显示音频输入
  • 声音选择:从 54 种以上的声音选项中选择
  • 声音持久性:您的声音偏好将在会话间保存
  • 动画效果:平滑的动画和视觉反馈
  • 状态指示器:清晰指示系统状态(就绪、监听、处理中)

配置

用户偏好存储在 ~/.config/speech-mcp/config.json 中,包括:

  • 选定的 TTS 声音
  • TTS 引擎偏好
  • 语速
  • 语言代码
  • 用户界面主题设置

您还可以通过环境变量设置偏好,例如:

  • SPEECH_MCP_TTS_VOICE - 设置您喜欢的声音
  • SPEECH_MCP_TTS_ENGINE - 设置您喜欢的 TTS 引擎

故障排除

如果您遇到扩展程序冻结或无响应的问题:

  1. 检查日志:查看 src/speech_mcp/ 目录下的日志文件,以获取详细的错误信息。
  2. 重置状态:如果扩展程序似乎卡住了,尝试删除 src/speech_mcp/speech_state.json 文件或将所有状态设置为 false
  3. 使用直接命令:不要使用 uv run speech-mcp,而是直接使用安装的包 speech-mcp
  4. 检查音频设备:确保您的麦克风已正确配置并且可以被 Python 访问。
  5. 验证依赖项:确保所有必需的依赖项都已正确安装。

常见 PortAudio 问题

"PyAudio 安装失败" 或 "找不到 portaudio.h 文件"

这通常意味着您的系统中没有安装或找不到 PortAudio:

  • macOS:

    brew install portaudio export LDFLAGS="-L/usr/local/lib" export CPPFLAGS="-I/usr/local/include" pip install pyaudio
  • Linux: 确保您已安装了开发包:

    # 对于 Debian/Ubuntu sudo apt-get install portaudio19-dev python3-dev pip install pyaudio # 对于 Fedora sudo dnf install portaudio-devel pip install pyaudio

"找不到音频设备" 或 "没有默认输入设备可用"

  • 检查您的麦克风是否已正确连接
  • 确认您的系统在声音设置中识别到了麦克风
  • 如果您有多个音频设备,可以在代码中尝试选择特定的设备索引

更新日志

有关最近改进和版本历史的详细列表,请参阅 更新日志

技术细节

语音转文字

MCP 使用 faster-whisper 进行语音识别:

  • 使用“基础”模型以实现准确性和速度的良好平衡
  • 在本地处理音频而不将数据发送到外部服务
  • 自动检测用户何时完成说话
  • 提供比原始 Whisper 实现更好的性能

文字转语音

MCP 支持多种文本转语音引擎:

默认:pyttsx3

  • 使用您计算机上可用的系统语音
  • 开箱即用,无需额外设置
  • 语音质量和自定义选项有限

可选:Kokoro TTS

  • 高质量的神经网络文本转语音,支持多种语音
  • 轻量级模型(82M 参数),在 CPU 上运行效率高
  • 多种语音风格和语言
  • 安装方法:python scripts/install_kokoro.py

关于语音模型的说明:语音模型是 .pt 文件(PyTorch 模型),由 Kokoro 加载。每个语音模型大约 523 KB,在需要时会自动下载。

语音持久化:所选语音会自动保存到配置文件(~/.config/speech-mcp/config.json)中,并且会在会话之间记住。这允许用户设置一次首选语音并在之后持续使用。

可用的 Kokoro 语音

Speech MCP 通过 Kokoro TTS 支持 54 种以上的高质量语音模型。有关可用声音和语言选项的完整列表,请访问 Kokoro GitHub 仓库

许可证

MIT 许可证

来源