文本转语音服务

集成ElevenLabs文本转语音功能的FastAPI后端与React前端应用,支持语音选择、实时通信及Cursor集成。

  • by georgi-io
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 georgi-io/elevenlabs-tts-mcp

使用说明

杰西卡项目(ElevenLabs TTS MCP)

该项目通过模型上下文协议(MCP)将ElevenLabs的文本到语音功能与Cursor集成在一起。它由FastAPI后端服务和React前端应用程序组成。

特性

  • 使用ElevenLabs API进行文本到速度转换
  • 语音选择和管理
  • Cursor的MCP集成
  • 现代React前端界面
  • WebSocket实时通信
  • 用于代码质量的预提交挂钩
  • 自动代码格式化和linting

项目结构

jessica/
├── src/
│   ├── backend/          # FastAPI backend service
│   └── frontend/         # React frontend application
├── terraform/            # Infrastructure as Code
├── tests/               # Test suites
└── docs/                # Documentation

需求

  • Python 3.11+
  • Poetry(用于后端依赖管理)
  • Node.js 18+(用于前端)
  • 光标(用于MCP集成)

地方发展设置

后端设置

# Clone the repository
git clone https://github.com/georgi-io/jessica.git
cd jessica

# Create Python virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install backend dependencies
poetry install

# Configure environment
cp .env.example .env
# Edit .env with your ElevenLabs API key

# Install pre-commit hooks
poetry run pre-commit install

前端设置

# Navigate to frontend directory
cd src/frontend

# Install dependencies
npm install

开发服务器

启动后端

# Activate virtual environment if not active
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Start the backend
python -m src.backend

后端提供:

  • REST API:http://localhost:9020
  • WebSocket:ws://localhost:9020/ws
  • MCP服务器:http://localhost:9020/sse(与API主服务器集成)

启动前端

# In src/frontend directory
npm run dev

前端开发服务器:

  • http://localhost:5173

环境配置

后端(.env)

# ElevenLabs API
ELEVENLABS_API_KEY=your-api-key

# Server Configuration
HOST=127.0.0.1
PORT=9020

# Development Settings
DEBUG=false
RELOAD=true

前端(.env)

VITE_API_URL=http://localhost:9020
VITE_WS_URL=ws://localhost:9020/ws

代码质量工具

后端

# Run all pre-commit hooks
poetry run pre-commit run --all-files

# Run specific tools
poetry run ruff check .
poetry run ruff format .
poetry run pytest

前端

# Lint
npm run lint

# Type check
npm run type-check

# Test
npm run test

生产部署

AWS ECR和GitHub操作设置

要启用自动构建Docker镜像并将其推送到Amazon ECR:

  1. 应用Terraform配置以创建所需的AWS资源:

    cd terraform
    terraform init
    terraform apply
    
  2. GitHub Actions工作流将自动:

    • 从S3中的Terraform状态读取必要的配置
    • 在Pushs上构建Docker镜像 main 或 develop 分支
    • 将图像推送到带有标签的ECR latest 以及SHA的具体承诺
  3. 不需要额外的存储库变量!工作流从Terraform状态获取所有必需的配置。

原理

GitHub Actions工作流配置为:

  1. 最初假定具有S3读取权限的预定义IAM角色
  2. 从S3中的Terraform状态文件中获取和提取配置值
  3. 使用状态文件中的实际部署角色重新进行身份验证
  4. 构建Docker镜像并将其推送到状态中定义的ECR存储库

这种方法消除了手动配置GitHub存储库变量的需要,并确保CI/CD过程始终使用当前的基础设施配置。

快速概览

  • 前端:从S3经CloudFront在jessica.georgi.io提供服务
  • 后端API:可从API.georgi.io/jessica获取
  • WebSocket:连接到api.georgi.io/jessica/ws
  • Docker镜像:存储在AWS ECR中,可以部署到ECS/EKS
  • 基础设施:通过此存储库中的Terraform进行管理

MCP与Cursor的集成

  1. 启动后端服务器
  2. 在游标设置中,添加新的MCP服务器:
    • 姓名:Jessica TTS
    • 类型:SSE
    • 网址:http://localhost:9020/sse

故障排除

常见问题

  1. API关键问题

    • 错误:“无效的API密钥”
    • 解决方案:检查 .env 文件
  2. 连接问题

    • 错误:“无法连接到MCP服务器”
    • 解决方案:验证后端是否正在运行以及端口是否正确
  3. 端口冲突

    • 错误:“地址已在使用中”
    • 解决方案:更改中的端口 .env
  4. WebSocket连接失败

    • 错误:“WebSocket连接失败”
    • 解决方案:确保后端正在运行,WebSocket URL正确

如需更多帮助,请在GitHub上打开问题。

许可证

麻省理工学院