SpeechWeave

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

Transcribe local files and URLs with SpeechWeave's OpenAI-compatible Speech-to-Text API.

已验证STDIO仅桌面媒体与设计AI 与机器学习

概览

AI 生成的概览

SpeechWeave 官方 MCP 服务器,让助手把本地音视频文件和公开 HTTPS 媒体链接转写或翻译为文本、SRT 或 VTT。

可以做什么
  • 按绝对路径转写或翻译本地音视频文件,并在同一次调用中返回文稿
  • 转写或翻译公开 HTTPS 链接中的媒体,可同步返回或作为后台任务运行
  • 启动长时任务、轮询状态、获取格式化文稿,并取消排队中或处理中的任务
  • 把文稿保存到指定文件路径(文本、Markdown、JSON、SRT 或 VTT),避免长文稿进入对话
  • 查询该 API 密钥的上传大小上限,并读取内置或在线 API 文档
适用场景
适合让助手把会议录音、访谈、播客等音视频整理成文稿、字幕或英文翻译,而无需离开聊天客户端。短片段可在一次调用中完成,长录音可作为轮询任务处理。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node.js 18 或更高版本。需要 SPEECHWEAVE_API_KEY 环境变量提供 SpeechWeave API 密钥。需要能访问 SpeechWeave API 的网络,转写本地文件时需提供绝对文件路径。
安装前请注意
API 密钥是计费凭据,会存放在客户端配置中,请勿放入共享文件。转写会消耗付费额度,遇到消费上限或余额不足等计费错误需先在账户侧处理,重试无效。本地文件和媒体链接会发送到 SpeechWeave 服务,请留意其数据保留政策。使用 output_file 保存文稿时,若开启 overwrite 可能覆盖已有文件。

安装

在 SourceWeft 中

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

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@speechweave/mcp

[npm version] [License: MIT]

Official Model Context Protocol server for SpeechWeave. Use to transcribe local files and URLs from Cursor, Claude Desktop, Claude Code, Windsurf, and other MCP clients.

SpeechWeave handles short clips and long-form audio without client-side chunking. This MCP server exposes both sync tools (the transcript comes back in the same tool call) and async tools (start a job, then poll for status).

Docs: speechweave.com/docs/mcp · API reference

Install / run

Requires Node.js 18+ and a SpeechWeave API key (sk_live_…).

bash
export SPEECHWEAVE_API_KEY="sk_live_..."npx -y @speechweave/mcp

Cursor / Claude Desktop

Add to your MCP config (e.g. .cursor/mcp.json, claude_desktop_config.json):

json
{	"mcpServers": {		"speechweave": {			"command": "npx",			"args": ["-y", "@speechweave/mcp"],			"env": {				"SPEECHWEAVE_API_KEY": "sk_live_..."			}		}	}}

Claude Code

bash
claude mcp add speechweave --env SPEECHWEAVE_API_KEY=sk_live_... -- npx -y @speechweave/mcp

Tools

ToolDeliveryWhen to use
transcribe_filesyncAbsolute local path. Returns the transcript in this call
transcribe_urlsyncPublic HTTPS URL. Returns the transcript in this call
start_job_fileasyncAbsolute local path. Returns job_id immediately
start_job_urlasyncPublic HTTPS URL. Returns job_id immediately
get_job_statusasyncPoll status / transcript for a job id
cancel_jobn/aCancel a queued or processing job
get_limitsn/aUpload size ceilings for your API key
fetch_docn/aPublic docs by slug (bundled pages + live OpenAPI)

Delivery (sync or async) is separate from service_mode (standard or deferred). Either service mode works with either delivery.

Never pass raw audio bytes over MCP. Use absolute file paths (local clients) or HTTPS URLs.

Configuration & Arguments

All transcription and job-start tools accept the following optional arguments:

  • model: Choose core (default) or max.
  • service_mode: Choose standard (default) or deferred (lower cost, lower priority).
  • language: Optional ISO language code to force language detection.
  • task: Choose transcribe (default) or translate to produce an English translation instead. language is ignored when translating.
  • prompt: Optional custom vocabulary hint (proper nouns, acronyms, product names) for the first ~30s of audio.

Formatted transcripts: transcribe_file, transcribe_url, and get_job_status also accept an optional response_format (text, srt, vtt, or verbose_json) to return the transcript in that shape instead of the default plain text.

Saving to a file: transcribe_file, transcribe_url, and get_job_status accept output_file (an absolute path). The transcript is written there instead of being returned, so long transcripts stay out of the conversation. The result includes output_file and bytes_written. The path must end in .txt, .md, .json, .srt, or .vtt and cannot be inside a hidden folder. The parent folder must exist, and an existing file is only replaced when overwrite is true. With response_format: "verbose_json" the file holds the text plus segment timings as JSON.

Billing errors: a 402 comes back as a tool error with code and a hint. USER_SPEND_CAP_REACHED (raise your spend cap), PLATFORM_SPEND_CAP_REACHED (monthly account limit, request an increase), and INSUFFICIENT_BALANCE or WALLET_EMPTY (top up) all need a change on the account first, so the hint tells the assistant not to retry.

Timeout behavior: Sync tools accept an optional timeout_ms. If the transcription exceeds the timeout, the tool gracefully returns a job_id and instructs the client to switch to get_job_status polling.

Account limits and docs

  • get_limits: Returns GET /v1/limits for the calling key, with MB equivalents. Use before uploading large local files.
  • fetch_doc: Returns public documentation. Slug list shows the catalog. Bundled pages include quickstart, mcp, models, billing, and data_retention. Slug api fetches a live OpenAPI overview, and api/<operation_slug> returns one endpoint (e.g. api/get_v1_limits).

Example Prompts

After adding the server and restarting your client, try asking your AI assistant:

Short clip (sync)

"Use SpeechWeave to transcribe /Users/me/recordings/standup.mp3 and summarize action items."

The assistant will call transcribe_file with the absolute path and summarize the returned transcript.

Long podcast (async)

"Start a SpeechWeave job for https://cdn.example.com/three_hour_podcast.mp3, then check back until it completes."

The assistant will call start_job_url, then periodically call get_job_status until the status reaches completed.

Translate to subtitles (sync)

"Translate /Users/me/recordings/spanish_interview.mp3 into English SRT subtitles using SpeechWeave."

The assistant will call transcribe_file with task: "translate" and response_format: "srt".

来源:README.md,提交 e8fe2d9

工具

8

transcribe_file

Transcribe local file (sync)

Upload a local audio/video file and wait until transcription finishes. Prefer for short/medium clips when you need the transcript in this turn. Pass an absolute filesystem path (never raw binary). Set task='translate' to get an English translation instead of a same-language transcript. Pass output_file (absolute path) to save the transcript to disk instead of returning it, which keeps long transcripts out of context. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_file instead.

输入参数path必填taskmodelpromptlanguageoverwritetimeout_msoutput_fileservice_moderesponse_format

transcribe_url

Transcribe URL (sync)

Start transcription from a public HTTPS URL and wait until it finishes. Prefer for short/medium media when you need the transcript in this turn. Set task='translate' to get an English translation instead of a same-language transcript. Pass output_file (absolute path) to save the transcript to disk instead of returning it. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_url instead.

输入参数url必填taskmodelpromptlanguageoverwritetimeout_msoutput_fileservice_moderesponse_format

start_job_file

Start job from local file (async)

Upload a local audio/video file and return a job id immediately without waiting. Use for long recordings or when you will poll later with get_job_status. Pass an absolute filesystem path. Set task='translate' for an English translation instead of a same-language transcript.

输入参数path必填taskmodelpromptlanguageservice_mode

start_job_url

Start job from URL (async)

Create a transcription job from a public HTTPS URL and return a job id immediately. Use for long media. Poll with get_job_status until completed, failed, or cancelled. Set task='translate' for an English translation instead of a same-language transcript.

输入参数url必填taskmodelpromptlanguageservice_mode

get_job_status

Get job status

Fetch the current status of a transcription job (and transcript when completed). Poll until status is completed, failed, or cancelled. Pass response_format ('srt', 'vtt', or 'verbose_json') on a completed job to fetch it re-formatted. Pass output_file (absolute path) to save the transcript to disk instead of returning it.

输入参数job_id必填overwriteoutput_fileresponse_format

cancel_job

Cancel job

Cancel a queued or processing transcription job. Fails if the job is already terminal.

输入参数job_id必填

get_limits

Get account upload limits

Fetch upload size ceilings for the calling API key (GET /v1/limits). Returns max_input_bytes, standard_max_bytes, and proxy_max_bytes plus MB equivalents. Call before transcribe_file or start_job_file when file size is large.

无需输入参数。

fetch_doc

Fetch SpeechWeave documentation

Return public SpeechWeave documentation for a slug. Use slug 'list' for the catalog. Bundled pages include quickstart, mcp, models, billing, and data_retention. Use slug 'api' for a live OpenAPI overview, or 'api/<operation_slug>' for one endpoint (e.g. api/get_v1_limits).

输入参数slug必填

版本历史

3
  1. v1.10.0最新Oct 21, 2026
  2. v1.9.3Sep 19, 2026
  3. v1.9.0Sep 16, 2026

评分

已满足适用检查项的 90%

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

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分