TTSForFree

io.github.CalmNguyen由 GitHub 账号 CalmNguyen 发布v1.0.0更新于 Oct 29, 2026

Generate AI voices, text-to-speech, subtitles, transcription, and video localization.

已验证Streamable HTTP可网页运行沟通与协作媒体与设计

概览

AI 生成的概览

远程语音合成服务,让助手生成 AI 配音、多角色播客、字幕对齐音频、转写文本和视频配音。

可以做什么
  • 浏览音色库:列出语言、按语言/性别/关键词搜索音色,查看音色详情、收藏和个人音色。
  • 管理收藏,并根据文字描述设计新的个人音色。
  • 生成语音:单音色 MP3、多音色合并 MP3,或按 SRT/WebVTT 时间轴对齐的音频。
  • 跟踪任务:查询状态、列出最近任务、获取分段音频详情。
  • 转写媒体:获取一次性上传链接上传本地文件,得到带时间戳的 SRT。
  • 视频本地化:估算积分、把一个视频配音成多种语言并查看各语言结果。
适用场景
适合需要旁白、播客或对话音频、与字幕同步的配音、语音转文字,或把视频自动配音成其他语言,并希望在助手内完成这些工作的场景。
运行要求
远程 Streamable HTTP 端点,无需安装。通过 OAuth 登录,不支持 OAuth 的客户端可用 X-API-Key 请求头。需要 TTSForFree 账号,含免费方案,付费生成消耗账号积分。上传通过一次性链接(HTTP PUT,最大 2 GB)。
安装前请注意
生成、转写和配音会消耗账号积分,大批量任务前应先查看账号状态和费用估算。多个工具会写入数据:收藏、音色设计(占用配额名额)、上传和配音任务。文本、字幕和上传的媒体会发送给第三方服务处理。API 密钥应作为机密保管。

安装

在 SourceWeft 中

  1. 打开 控制台中的 TTSForFree,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.CalmNguyen%2Fttsforfree/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "ttsforfree": {
      "type": "http",
      "url": "https://api.ttsforfree.com/mcp"
    }
  }
}

README

TTSForFree MCP server

Text-to-speech, multi-voice podcasts, subtitle voiceovers, transcription and video dubbing for Claude and any other MCP client. Thousands of AI voices in 100+ languages, returned as hosted MP3 URLs.

A free plan is included. Paid generation uses your TTSForFree credits.

Connect

Claude (claude.ai, Desktop, mobile)

  1. Settings → Connectors → Add custom connector
  2. URL: https://api.ttsforfree.com/mcp
  3. Click Connect, sign in to TTSForFree and allow access.

Claude Code

bash
claude mcp add --transport http ttsforfree https://api.ttsforfree.com/mcp

Then run /mcp → ttsforfree → Authenticate. With an API key instead:

bash
claude mcp add --transport http ttsforfree https://api.ttsforfree.com/mcp \  --header "X-API-Key: YOUR_API_KEY"

Cursor, VS Code and other clients

json
{  "mcpServers": {    "ttsforfree": {      "url": "https://api.ttsforfree.com/mcp"    }  }}

Add "headers": { "X-API-Key": "YOUR_API_KEY" } if the client does not support OAuth. Get an API key at ttsforfree.com/en/profile.

Claude API (MCP connector)

bash
curl https://api.anthropic.com/v1/messages \  -H "x-api-key: $ANTHROPIC_API_KEY" \  -H "anthropic-version: 2023-06-01" \  -H "anthropic-beta: mcp-client-2025-11-20" \  -H "content-type: application/json" \  -d '{    "model": "claude-opus-5-5",    "max_tokens": 2048,    "mcp_servers": [{      "type": "url",      "name": "ttsforfree",      "url": "https://api.ttsforfree.com/mcp",      "authorization_token": "YOUR_TTSFORFREE_API_KEY"    }],    "tools": [{ "type": "mcp_toolset", "mcp_server_name": "ttsforfree" }],    "messages": [{ "role": "user", "content": "Read this in a warm British voice: Welcome to our channel!" }]  }'

What you can ask

Ask ClaudeTools it uses
"Read this lesson in a calm British voice from my favorites."list_favorite_voices → text_to_speech
"Turn this article into a 2-host podcast, one MP3."multi_voice_to_speech → get_job_detail
"Translate this SRT to Spanish, keep the timestamps, voice it, give me the ffmpeg command."srt_to_speech → get_job_status
"Transcribe this video into an SRT file."create_upload_url → transcribe_media
"Dub this video into Vietnamese, Spanish and Japanese for YouTube. Cost first."create_upload_url → estimate_video_localization → localize_video → get_localization_status
"Make me a young male voice that reviews stories, southern Vietnamese accent."design_custom_voice

Video walkthroughs: ttsforfree.com/en/claude-tts-connector.

Tools (21)

ToolTypeWhat it does
list_languagesreadAll supported languages and their codes.
list_voicesreadSearch voices by language, gender, provider and keywords ("warm narrator").
get_voice_detailsreadPersona, use case, accent, styles, preview audio and credit cost of one voice.
list_favorite_voicesreadThe user's favorite voices, in saved order.
list_my_custom_voicesreadPersonal voices from Voice Design / Voice Clone and the remaining quota.
add_favorite_voicewriteSave a voice to favorites.
remove_favorite_voicewriteRemove a voice from favorites.
design_custom_voicewriteCreate a new personal voice from a text description.
get_account_statusreadPlan, remaining credits, per-request limits and API rate limits.
text_to_speechjobOne text + one voice → MP3 (narration, articles, lessons).
multi_voice_to_speechjobOrdered segments with different voices → one MP3 (podcast, dialogue).
srt_to_speechjobSRT/WebVTT or timed segments → timeline-aligned MP3 + ffmpeg merge commands.
get_job_statusreadPoll a job until SUCCESS and get the audio URL.
list_recent_jobsreadRecent jobs with audio URLs, to reuse instead of paying twice.
get_job_detailreadPer-segment audio of a multi-voice/SRT job (for Remotion and captions).
create_upload_urlwriteOne-time upload URL for a local video/audio file (PUT, up to 2 GB).
transcribe_mediajobVideo/audio → timestamped SRT (speech-to-text).
get_transcriptionreadStatus and SRT of a transcription.
estimate_video_localizationreadCredit estimate to dub a video into several languages.
localize_videojobDub one video into many languages: audio track + dubbed video per language.
get_localization_statusreadProgress and results (audio URL for YouTube, dubbed video, SRT) per language.

job tools are asynchronous: they return a job_id, and the client polls the matching status tool until SUCCESS.

Prompts: youtube_multi_language_audio, video_voiceover, podcast_episode, narrate_text.

Privacy and data

  • OAuth access is scoped to your TTSForFree account and can be revoked any time from your TTSForFree profile (Connected apps).
  • Text, subtitles and uploaded media are processed only to produce the audio, subtitles or video you asked for.
  • Privacy policy: ttsforfree.com/en/privacy-policy

Support

Open an issue in this repository or contact us via ttsforfree.com/en/contact.

Registry metadata

server.json is the entry published to the MCP Registry. To publish an update, bump version in server.json and push a tag vX.Y.Z (or run the Publish to MCP Registry workflow manually). The workflow signs in with GitHub OIDC, so no secret is needed.

来源:README.md,提交 294189e

工具

21

list_languages

List languages

List every language supported by TTSForFree text-to-speech. Returns language codes to pass to list_voices.

无需输入参数。

list_voices

Find voices

Search the AI voice catalog for one language. Each result has a `voice` token (v1:...) - pass it unchanged as `voice` to text_to_speech, multi_voice_to_speech or srt_to_speech. Results are sorted by popularity; `can_use=false` means the user's plan cannot use that voice. Prefer the user's favorite or custom voices when they exist.

输入参数limitquerygenderlanguage必填provideronly_usable

get_voice_details

Voice details

Get full metadata for one voice token: persona, use case, accent, pitch, styles, preview audio and credit cost.

输入参数voice必填

list_my_custom_voices

My custom voices

List the user's personal voices created with Voice Design (from a text prompt) or Voice Clone (from an audio sample), plus the remaining custom-voice quota. Use `voice` from the result in any speech tool.

无需输入参数。

list_favorite_voices

My favorite voices

List the voices the user marked as favorites, in their saved order. Check this first when the user did not name a voice.

无需输入参数。

add_favorite_voice

Add favorite voice

Save a voice to the user's favorites (only when the user asks).

输入参数voice必填

remove_favorite_voice

Remove favorite voice

Remove a voice from the user's favorites (only when the user asks).

输入参数voice必填

design_custom_voice

Design a custom voice

Create a new personal AI voice from a natural-language description (Gemini Voice Design). Uses one slot of the user's custom-voice quota - confirm with the user first. Good for a unique narrator or a character voice in a video/podcast. Returns the new `voice` token.

输入参数gender必填prompt必填display_name必填language_code必填

get_account_status

Account status

Show the user's plan tier, remaining characters/credits, max characters per request, max blocks per multi-voice/SRT job and API rate limits. Call before large jobs.

无需输入参数。

text_to_speech

Text to speech

Convert one text into one MP3 with one voice. Use for narration, voiceover scripts, articles, lessons, announcements or any audio whose length can follow the speech. Consumes credits (characters x voice rate). Returns job_id, status and audio_url when ready.

输入参数text必填pitchvoice必填wait_seconds

multi_voice_to_speech

Multi-voice audio (podcast / dialogue)

Render ordered segments, each with its own voice, into ONE merged MP3. Use for podcasts, dialogues, interviews, audio dramas or explainer videos with several speakers when there are no fixed timestamps. Consumes credits.

输入参数segments必填wait_seconds

srt_to_speech

Subtitles to speech (video voiceover / dubbing)

Create ONE MP3 that follows a subtitle timeline: every cue starts at its timestamp and speech speed auto-fits the cue duration. Use for video voiceover, dubbing translated subtitles, YouTube localization, tutorials and any edit where audio must line up with existing video. Pass either raw `srt` (SRT or WebVTT text) or `segments` with start_ms/end_ms. For several speakers set `speaker_voices` and prefix cue text with '[Name]' or 'Name:'. The resulting MP3 starts at 00:00 of the video, so it can be muxed directly with ffmpeg (commands are returned). Consumes credits.

输入参数srtvoicesegmentswait_secondsspeaker_voicesmax_speech_ratemin_speech_rate

get_job_status

Job status

Check a speech job created earlier. Returns status (PENDING | SUCCESS | ERROR) and audio_url once SUCCESS. Never guess or fetch an audio URL before SUCCESS.

输入参数job_id必填job_type必填wait_seconds

list_recent_jobs

Recent jobs

List the user's most recent speech jobs with status and audio URLs, to reuse earlier audio instead of paying again.

输入参数limitjob_type

get_job_detail

Job segments (for Remotion / editors)

Get a multi_voice_to_speech or srt_to_speech job with every segment: text, voice and its own audio_url, plus the merged audio. Use it to build captions or a Remotion/NLE timeline (one <Sequence> per segment; measure each file's duration in the renderer).

输入参数job_id必填

create_upload_url

Upload a video/audio file

Get a one-time URL to upload a local video or audio file (mp4, mov, webm, mkv, mp3, wav, m4a...) up to 2 GB. Upload with HTTP PUT of the raw bytes, e.g. `curl -T video.mp4 "<upload_url>"` (valid 15 minutes), then pass `public_url` to transcribe_media or localize_video. Only files uploaded here (or on ttsforfree.com) are accepted; YouTube and other external links are never downloaded. If you cannot run commands, ask the user to upload the file on https://ttsforfree.com/en/video-localization/ and paste the file link.

输入参数file_name必填file_size_bytes

transcribe_media

Transcribe video/audio to SRT

Speech-to-text for an uploaded video or audio file: returns timestamped SRT (the timeline to rewrite, translate or re-voice with srt_to_speech). Credits are charged per second of media, measured by the server. Use language = the spoken language code from list_languages.

输入参数language必填media_url必填wait_seconds

get_transcription

Transcription status

Check a transcribe_media job and get its SRT once finished.

输入参数job_id必填wait_seconds

estimate_video_localization

Estimate video dubbing cost

Estimate the credits to dub one video into one or more languages (speech-to-text + translation + voice + video merge) before running localize_video. Pass video_url (duration is measured) or duration_seconds.

输入参数targets必填video_urlsource_language必填duration_seconds

localize_video

Dub a video into other languages

Full automatic dubbing of an uploaded video: transcribe once, translate, voice every target language with its own voice and render a dubbed video per language. Each language returns an audio_url (voice track aligned to the original timeline - upload it to YouTube Studio as a multi-language audio track) and a final_video_url. Takes several minutes: returns job_guids immediately; poll get_localization_status. Confirm the cost with estimate_video_localization for long videos.

输入参数targets必填video_url必填source_language必填original_audio_volume_percent

get_localization_status

Video dubbing status

Status of localize_video jobs: current step, and when Completed the dubbed audio_url, final_video_url and translated SRT for each language.

输入参数job_guids必填wait_seconds

版本历史

1
  1. v1.0.0最新Oct 22, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。