Talkies

io.github.psyb0t由 GitHub 账号 psyb0t 发布v0.17.0更新于 Oct 24, 2026

Self-hosted MCP server for speech: ASR transcription, TTS synthesis, and file staging tools.

概览

AI 生成的概览

自托管的 Docker 语音服务,提供 MCP 端点,让助手转写音频文件并为 ASR 流程暂存文件。

可以做什么
  • 通过兼容 OpenAI 的转写接口转写音频文件并生成字幕,包括 IPA 模型输出的音素结果
  • 在服务端暂存、列出和删除用作转写输入的文件
  • 查看已启用模型及其模态,并卸载模型以释放内存
  • 除 MCP 外,同一服务还提供语音合成、WebSocket 实时 ASR,以及用放入数据目录的音频片段进行声音克隆
适用场景
当你想在助手内做语音转文字,但希望音频留在本机而不是发给托管 API,并且愿意运行一个会下载模型权重的 Docker 容器时使用。
运行要求
本地 Docker 运行环境;镜像为 psyb0t/talkies,通过 streamable HTTP 在 8000 端口提供服务,通常只映射到回环地址。较大的模型需要 CUDA 镜像和 GPU。模型权重在运行时下载,可用 TALKIES_ENABLED_MODELS 限制首次启动时拉取的模型。可选通过 TALKIES_AUTH_TOKEN 设置 bearer 令牌。
安装前请注意
默认不启用认证,除健康检查外的所有路由都对外开放,除非设置 TALKIES_AUTH_TOKEN;应仅绑定回环地址或置于 TLS 之后。首次启动会下载内置注册表中的全部模型,除非加以限制。文件暂存工具可在服务器上写入和删除文件,且会抓取远程 file_path URL,若调用方不可信应设置 TALKIES_BLOCK_PRIVATE_DOWNLOADS。模型权重有其自身的使用条款。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

talkies

[CI] [version] [license] [Docker Pulls]

Self-hosted speech services in one Docker image: OpenAI-compatible file transcription and text-to-speech, Talkies live ASR over WebSocket, file staging, model lifecycle controls, and an MCP endpoint for ASR workflows.

Contents

Start here

Restrict the first boot to the models you need; otherwise the entrypoint downloads every model in the bundled registry.

bash
docker run --rm -it --name talkies \  -p 127.0.0.1:8000:8000 \  -v "$PWD/talkies-data:/data" \  -e TALKIES_ENABLED_MODELS=whisper-large-v3-turbo,kokoro-82m \  psyb0t/talkies:latest
curl -s http://127.0.0.1:8000/healthzcurl -s http://127.0.0.1:8000/v1/audio/transcriptions \  -F "file=@/path/to/clip.wav" \  -F "model=whisper-large-v3-turbo"

For CUDA-only models — Parakeet-TDT, the larger Canary models, Qwen3 TTS and Chatterbox Turbo — use psyb0t/talkies:latest-cuda with --gpus all. The loopback port mapping keeps the service local; see Getting started for first boot and authentication.

What it provides

SurfacePurposeReference
POST /v1/audio/transcriptionsFile transcription and subtitlesHTTP API
WS /v1/audio/transcriptions/streamLive 16 kHz PCM ASRStreaming
POST /v1/audio/speechSpeech synthesis in six formatsHTTP API
GET /v1/modelsEnabled slugs and their modalityHTTP API
GET /v1/audio/voicesPer-model voice catalog with origin tagsModels
GET/PUT/DELETE /v1/files/*Server-side file stagingHTTP API
/api/ps, /unloadModel inspection and evictionOperations
/v1/mcpStreamable HTTP MCP with ASR/file toolsHTTP API
GET /healthzLiveness probe; the only unauthenticated routeOperations

The HTTP transcription and speech routes use the corresponding OpenAI wire shapes where those contracts overlap. Streaming ASR, files, lifecycle controls, and MCP are Talkies extensions.

Models at a glance

  • CPU: two Whisper models, Canary-180M-Flash, Nemotron ASR via parakeet.cpp, four English Sherpa-ONNX Zipformer choices, Vosk small English, two phoneme recognizers, and two Kokoro TTS backends.
  • CUDA: the CPU set plus Parakeet-TDT, Canary 1B/Qwen ASR, five Qwen3 TTS variants, and Chatterbox Turbo.
  • Live ASR: bundled Nemotron, Sherpa-ONNX, and Vosk are native; bundled Whisper is a bounded rolling decoder. Sherpa and Vosk also work through the OpenAI-compatible file-transcription endpoint.
  • Phoneme recognition: wav2vec2-xlsr-53-espeak and zipa-ipa return the IPA phones that were spoken, not words, with no language model correcting them toward the nearest dictionary entry. Same transcription endpoint and timestamp options as the other ASR models; see Phoneme recognition.
  • Per-model concurrency limits cover WebSocket, HTTP, MCP, ASR, and TTS; the bundled Nemotron CPU and CUDA entries admit two requests.
  • Streaming TTS: Qwen3 returns incremental raw PCM for response_format="pcm"; other TTS formats and Kokoro are buffered.
  • Expressive TTS: Chatterbox Turbo (English) takes 19 inline tags such as [sigh], [whispering] and [laugh] directly in the input text. Its output carries a neural watermark by default; set TALKIES_CHATTERBOX_WATERMARK to false to emit unmarked audio.
  • Voice cloning: drop a .wav into /data/custom-voices and it appears on GET /v1/audio/voices. Qwen3 pairs it with an optional sibling .txt transcript; Chatterbox needs only the clip, longer than five seconds.

Exact slugs, executors, tag list, and registry format: Models and registries.

Reading phonemes

wav2vec2-xlsr-53-espeak and zipa-ipa use the same transcription call as every other ASR slug; only the model changes. text comes back as a space-separated IPA phone stream rather than words, and no language model corrects a mispronunciation toward a real word.

bash
curl -s http://127.0.0.1:8000/v1/audio/transcriptions \  -F "file=@/path/to/clip.wav" \  -F "model=zipa-ipa"# {"text": "a ɪ m k ə n f j u z ...", ...}

Add -F "response_format=verbose_json" (or timestamp_granularities[]=word) to get each phone as a words entry with start and end in seconds.

Prompting Chatterbox with emotion

Tags go inline in input, in square brackets, lowercase. They are real tokens in the model's tokenizer, so only these 19 do anything — any other bracketed word is spoken as literal text:

[angry] [fear] [surprised] [whispering] [advertisement] [dramatic] [narration][crying] [happy] [sarcastic] [clear throat] [sigh] [shush] [cough] [groan][sniff] [gasp] [chuckle] [laugh]
bash
curl -s http://127.0.0.1:8000/v1/audio/speech \  -H 'Content-Type: application/json' \  -d '{        "model": "chatterbox-turbo",        "voice": "builtin",        "input": "Oh, that is hilarious. [chuckle] Anyway [sigh] back to work.",        "response_format": "mp3"      }' --output out.mp3

Swap "voice" for the name of any .wav you dropped in /data/custom-voices (extension stripped) to speak the same line in a cloned voice.

Documentation

GuideContents
Getting startedRun CPU/CUDA, persist data, authenticate, verify
Models and registriesBundled slugs, image availability, custom registries
ArchitectureRequest flow, backend selection, on-disk layout
HTTP APIRequests, responses, files, lifecycle, MCP
StreamingLive ASR protocol, streaming backends, PCM TTS
ConfigurationSupported environment variables and limits
Operations and securityExposure, model memory, data retention, logs
DevelopmentMake targets, test suites, image builds

Agent integrations

The Talkies skill teaches agents to use the HTTP, WebSocket, and MCP surfaces. Install it through the shared psyb0t marketplace or let Codex discover it directly from this checkout.

Claude Code

bash
claude plugin marketplace add psyb0t/agentsclaude plugin install talkies@psyb0t

Claude Code prompts for the Talkies URL and, when enabled, the bearer token; the sensitive token is stored through the client's protected configuration.

Codex

bash
codex plugin marketplace add psyb0t/agentscodex plugin add talkies@psyb0t

A marketplace install invokes the skill as $talkies:talkies. Codex also discovers .agents/skills/talkies directly in this repository, where it is invoked as $talkies without installation.

OpenClaw

The skill and MCP bridge are published through ClawHub:

bash
openclaw skills install @psyb0t/talkiesopenclaw plugins install clawhub:@psyb0t/talkies

The bridge connects local stdio MCP clients to a running Talkies /v1/mcp endpoint. Set TALKIES_URL and, when authentication is enabled, TALKIES_AUTH_TOKEN.

Security in one minute

TALKIES_AUTH_TOKEN enables a shared bearer token for every HTTP and WebSocket route except /healthz. It is unset by default. Keep the port loopback-only or put Talkies behind TLS, authentication, and rate limiting. If untrusted callers can supply remote file_path URLs, set TALKIES_BLOCK_PRIVATE_DOWNLOADS=true. See Operations and security for the complete posture.

Development

bash
make check                 # lint + unit tests in the dev imagemake lint                  # flake8 + mypy onlymake test-unit             # fast offline unit testsmake run                   # run the CPU image locallymake test-streaming        # real CPU native WebSocket ASR testmake test-streaming-custom # real CPU Sherpa/Vosk WebSocket + HTTP testsmake test-streaming-custom-cuda # real CUDA Sherpa WebSocket + HTTP testmake compile-heavy         # regenerate the hash-locked ML requirementsmake build-all             # CPU and CUDA production images

make help lists every target.

Talkies is released under the WTFPL. Model weights are downloaded at runtime and have their own terms; image component notices are in THIRD_PARTY.md. Release notes are in CHANGELOG.md.

来源:README.md,提交 f157302

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.17.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

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

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分