语音交互扩展

Speech MCP是一个为Goose设计的语音交互扩展,提供实时音频处理、语音识别、文本转语音及现代音频可视化界面。

  • by Kvadratni
  • Python
  • 本地部署
  • 85 星标
  • 更新于
在 GitHub 查看 Kvadratni/speech-mcp

使用说明

语音MCP

Goose MCP扩展,用于与现代音频可视化进行语音交互。

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

概述

语音MCP为 鹅,允许用户通过语音而不是文本进行交互。它包括:

  • 语音识别的实时音频处理
  • 使用更快的耳语进行本地语音转文本(OpenAI whisper模型的更快实现)
  • 具有多种语音选项的高质量文本转语音
  • 基于PyQt的现代音频可视化用户界面
  • 用于语音交互的简单命令行界面

特性

  • 现代用户界面:基于PyQt的界面,具有音频可视化和深色主题
  • 语音输入:使用更快的耳语捕获和转录用户语音
  • 语音输出:使用54+语音选项将代理响应转换为语音
  • 多人叙事:为故事和对话生成多个声音的音频文件
  • 单声叙事:将任何文本转换为您喜欢的语音
  • 音频/视频转录:使用可选的时间戳和说话者检测从各种媒体格式转录语音
  • 语音持久性:在会话之间记住您喜欢的声音
  • 持续对话:代理响应后自动监听用户输入
  • 静音检测:当用户停止讲话时,自动停止录制
  • 稳健的错误处理:从常见故障模式中优雅地恢复,并提供有益的语音建议

安装

重要提示:安装后,第一次使用语音接口时,下载Kokoro语音模型可能需要几分钟(每个语音约523 KB)。在初始设置期间,系统将使用听起来更像机器人的回退语音。下载Kokoro语音后,将自动使用高质量的语音。

⚠️ 重要先决条件⚠️

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

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,PortAudio包含在PyAudio轮文件中,因此使用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%20接口和描述=语音%20交互%20与%20音频%20可视化%20或%20选择

选项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(用于音频捕获)
  • 更快的耳语(用于语音转文本)
  • NumPy(用于音频处理)
  • Pydub(用于音频处理)
  • psutil(用于过程管理)

可选依赖关系

  • 科科罗TTS:用于具有多种声音的高质量文本到语音转换
    • 要安装Kokoro,您可以使用带有可选依赖项的pip:
      pip install speech-mcp[kokoro]     # Basic Kokoro support with English
      pip install speech-mcp[ja]         # Add Japanese support
      pip install speech-mcp[zh]         # Add Chinese support
      pip install speech-mcp[all]        # All languages and features
      
    • 或者,运行安装脚本: 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_*):

    • 合金,aoede,贝拉,心,杰西卡,科尔,妮可,新星,河,萨拉,天空
  2. 美国男性 (am_*):

    • 亚当、回声、埃里克、芬里尔、利亚姆、迈克尔、缟玛瑙、冰球、圣诞老人
  3. 英国女性 (bf_*):

    • 爱丽丝、艾玛、伊莎贝拉、莉莉
  4. 英国男性 (bm_*):

    • 丹尼尔,寓言,乔治,刘易斯
  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"
)

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

音频转录

MCP可以使用更快的耳语从各种音频和视频格式转录语音:

# 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:包含有关转录的元数据

特征:

  • 自动语言检测
  • 可选字级时间戳
  • 可选扬声器检测
  • 从视频文件中高效提取音频
  • 长文件的进度跟踪
  • 详细的元数据包括:
    • 持续时间
    • 语言检测置信度
    • 处理时间
    • 扬声器更改(启用时)

用法

要将此MCP与Goose一起使用,只需让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说话并开始自然说话。

UI功能

新的基于PyQt的UI包括:

  • 现代黑暗主题:时尚、专业的外观
  • 音频可视化:音频输入的动态可视化
  • 语音选择:从54+语音选项中选择
  • 语音持久性:您的语音偏好在会话之间保存
  • 最佳视觉效果:流畅的动画和视觉反馈
  • 状态指示灯:系统状态的明确指示(就绪、监听、处理)

配置

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

  • 选定的TTS语音
  • TTS发动机偏好
  • 语音速度
  • 语言代码
  • UI主题设置

您还可以通过环境变量设置首选项,例如:

  • 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. 验证依赖关系:确保所有必需的依赖项都已正确安装。

常见端口音频问题

“PyAudio安装失败”或“未找到portaudio.h文件”

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

  • macOS:

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

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

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

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

更新日志

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

技术细节

语音到文本

MCP使用更快的耳语进行语音识别:

  • 使用“基础”模型,实现精度和速度的良好平衡
  • 在本地处理音频,而不向外部服务发送数据
  • 自动检测用户何时发言完毕
  • 相较于最初的Whisper实现,其性能得到了提升

文本转语音

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

默认值:pyttsx3

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

可选:Kokoro TTS

  • 具有多个声音的高质量神经文本到语音
  • 在CPU上高效运行的轻量级模型(82M参数)
  • 多种语音风格和语言
  • 要安装: python scripts/install_kokoro.py

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

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

可用的Kokoro声音

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

许可证

MIT许可证