{"id":50777462,"url":"https://github.com/heavygee/openacp-openai-tts-plugin","last_synced_at":"2026-06-12T01:01:42.186Z","repository":{"id":364123847,"uuid":"1266295030","full_name":"heavygee/openacp-openai-tts-plugin","owner":"heavygee","description":"OpenACP plugin — TTS via any OpenAI-compatible /v1/audio/speech endpoint (Kokoro, Chatterbox, AllTalk, F5-TTS)","archived":false,"fork":false,"pushed_at":"2026-06-11T17:45:02.000Z","size":797,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T19:20:41.215Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heavygee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["heavygee"]}},"created_at":"2026-06-11T13:40:47.000Z","updated_at":"2026-06-11T17:44:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/heavygee/openacp-openai-tts-plugin","commit_stats":null,"previous_names":["heavygee/openacp-openai-tts-plugin"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/heavygee/openacp-openai-tts-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heavygee%2Fopenacp-openai-tts-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heavygee%2Fopenacp-openai-tts-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heavygee%2Fopenacp-openai-tts-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heavygee%2Fopenacp-openai-tts-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heavygee","download_url":"https://codeload.github.com/heavygee/openacp-openai-tts-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heavygee%2Fopenacp-openai-tts-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34224103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-12T01:00:52.510Z","updated_at":"2026-06-12T01:01:42.151Z","avatar_url":"https://github.com/heavygee.png","language":"TypeScript","funding_links":["https://github.com/sponsors/heavygee"],"categories":[],"sub_categories":[],"readme":"# openacp-openai-tts-plugin\n\n[![ci](https://github.com/heavygee/openacp-openai-tts-plugin/actions/workflows/ci.yml/badge.svg)](https://github.com/heavygee/openacp-openai-tts-plugin/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/openacp-openai-tts-plugin.svg)](https://www.npmjs.com/package/openacp-openai-tts-plugin)\n[![license](https://img.shields.io/npm/l/openacp-openai-tts-plugin.svg)](LICENSE)\n[![node](https://img.shields.io/node/v/openacp-openai-tts-plugin.svg)](package.json)\n\nOpenACP plugin - TTS via any OpenAI-compatible `/v1/audio/speech` endpoint.\n\nWorks out of the box with **Kokoro**, **AllTalk**, **F5-TTS**, **StyleTTS2**, and any other server that implements the OpenAI audio speech API. Includes an optional **Chatterbox voice-cloning mode** that uses the `/audio/speech/upload` multipart endpoint for servers that need a reference WAV.\n\nLinks: [Contributing](CONTRIBUTING.md) - [Security](SECURITY.md) - [Support](SUPPORT.md) - [Changelog](CHANGELOG.md)\n\n---\n\n## Install\n\n```bash\nopenacp plugin install openacp-openai-tts-plugin\n```\n\n## Configure\n\nDuring install you will be prompted for:\n\n- **Server URL** - base URL of your TTS server (default: `http://localhost:8880` for Kokoro)\n- **Model** - model name to pass to the server (default: `kokoro`)\n- **Voice** - voice identifier (default: `af_bella`); used by the standard `/v1/audio/speech` endpoint\n- **API key** - optional; sent as `Authorization: Bearer \u003ckey\u003e` if provided\n- **Voice file path** - optional; absolute path to a reference WAV \u003e5s; enables Chatterbox mode (see below)\n\nReconfigure at any time:\n\n```bash\nopenacp plugin configure openacp-openai-tts-plugin\n```\n\nThen point `@openacp/speech` at this provider:\n\n```json\n// plugins/data/@openacp/speech/settings.json\n{ \"ttsProvider\": \"openai-compatible\" }\n```\n\n---\n\n## Server quick-reference\n\nPopular local TTS servers and their default ports:\n\n- **Kokoro** - `http://localhost:8880` - model: `kokoro`, voices: `af_bella`, `bm_george`, etc.\n- **AllTalk** - `http://localhost:7851` - model: depends on loaded model\n- **F5-TTS** - `http://localhost:7860` - model: `F5-TTS`\n- **Chatterbox** - `http://localhost:18002` - model: `chatterbox-turbo` (see Chatterbox mode below)\n\n---\n\n## Chatterbox mode\n\nChatterbox's standard `/v1/audio/speech` endpoint ignores the `voice` field and uses a server-side configured sample — which is often \u003c5s on a default install, causing a `\"Audio prompt must be longer than 5 seconds!\"` error.\n\nSet `voiceFilePath` to an absolute path pointing at a WAV file longer than 5 seconds. The plugin will switch to the `/audio/speech/upload` multipart endpoint, sending your reference WAV on every request for voice cloning.\n\nWhen running OpenACP in Docker, mount your voices directory and use the container path:\n\n```yaml\n# compose.yml\nservices:\n  openacp:\n    ...\n    volumes:\n      - /path/to/voices:/voices:ro\n    extra_hosts:\n      - host.docker.internal:host-gateway\n```\n\nThen set:\n- endpoint: `http://host.docker.internal:18002`\n- voiceFilePath: `/voices/your-voice.wav`\n\n---\n\n## Paralinguistic tags (Chatterbox)\n\nEmbed these directly in text for expressive output:\n\n`[laugh]` `[chuckle]` `[cough]` `[sigh]` `[gasp]` `[clear throat]`\n\n---\n\n## Updating\n\n`npx` caches the resolved package for ~24h; if you run via `openacp` and want\nthe latest plugin without reinstalling:\n\n```bash\nopenacp plugin update openacp-openai-tts-plugin\n```\n\nOr pin to the latest tagged release:\n\n```bash\nopenacp plugin install openacp-openai-tts-plugin@latest\n```\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/heavygee/openacp-openai-tts-plugin.git\ncd openacp-openai-tts-plugin\nnpm install\nnpm run build \u0026\u0026 npm test\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the full contributor flow\n(issue-first workflow, conventional commits, PR checklist, release\nautomation via release-please).\n\n---\n\n## License\n\nMIT - see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheavygee%2Fopenacp-openai-tts-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheavygee%2Fopenacp-openai-tts-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheavygee%2Fopenacp-openai-tts-plugin/lists"}