{"_id":"@conan-scott/openclaw-fish-audio","_rev":"5-f02e11a67ce1498b40a8091921f35c44","name":"@conan-scott/openclaw-fish-audio","dist-tags":{"latest":"1.1.6"},"versions":{"1.0.0":{"name":"@conan-scott/openclaw-fish-audio","version":"1.0.0","keywords":["openclaw","openclaw-plugin","fish-audio","tts","text-to-speech","voice-cloning","speech-provider"],"author":{"name":"Conan Scott"},"license":"MIT","_id":"@conan-scott/openclaw-fish-audio@1.0.0","maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"dist":{"shasum":"ebabe2d3184262974791e5d26ebb48dad34fa36e","tarball":"https://registry.npmjs.org/@conan-scott/openclaw-fish-audio/-/openclaw-fish-audio-1.0.0.tgz","fileCount":8,"integrity":"sha512-FYcm7U0vSi3s4KWYLewMAg5owA580hZg98myMFfyMHf0RIA2E9XyZ62Q7JtmsOXaXbJB8KAu2Li3n+KSbLE8Og==","signatures":[{"sig":"MEUCIHWR1uyjYrjwrsCOGFHFHUpPDQGclCk/G9sgLo8DZ4oeAiEAsQDrGl5aIFRkzpGmcU1VC+0rlnh0fv7X5j8/SrUUqIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26793},"type":"module","gitHead":"a8f0eb94c541d4fa0814a1b64d16b2c58006808b","_npmUser":{"name":"conanscott","email":"conanscott@gmail.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.31"},"extensions":["./index.ts"]},"repository":{"url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git","type":"git"},"_npmVersion":"11.9.0","description":"Fish Audio TTS speech provider plugin for OpenClaw — high-quality voice cloning and text-to-speech","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-fish-audio_1.0.0_1775264914649_0.1410712163242933","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@conan-scott/openclaw-fish-audio","version":"1.1.0","keywords":["openclaw","openclaw-plugin","openclaw tts","fish-audio","fish-audio-tts","tts","text-to-speech","speech","speech-provider","voice","voice-cloning","voice-notes","telegram tts","telegram voice","whatsapp tts","whatsapp voice","ai voice","cloned voice"],"author":{"name":"Conan Scott"},"license":"MIT","_id":"@conan-scott/openclaw-fish-audio@1.1.0","maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"dist":{"shasum":"a033e72eb180eb4c097272419c793da15eb85d68","tarball":"https://registry.npmjs.org/@conan-scott/openclaw-fish-audio/-/openclaw-fish-audio-1.1.0.tgz","fileCount":9,"integrity":"sha512-ScXI3Dj7NFEq4J96LON2PPvpO/cLr00u3PyqFEeM/yyLA0UfE0OGKmNizv8CFrd61nDijuHYTzn14CSApK4fxw==","signatures":[{"sig":"MEYCIQCupbKAv3vSvkXrDaUeqbOnYXgW5MF2wkDxLYQzwzVq8AIhAPLUFdEB/9gZ4QyPDMNN9OHouAbW6rLrykzNT+wpjSi8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30235},"type":"module","gitHead":"fd329d3975c75bcb7ccde24be40fec0c3d5e4a76","scripts":{"test":"vitest run"},"_npmUser":{"name":"conanscott","email":"conanscott@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.4.27","pluginSdkVersion":"2026.4.27"},"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.31"},"extensions":["./index.ts"]},"repository":{"url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git","type":"git"},"_npmVersion":"11.9.0","description":"Fish Audio speech provider for OpenClaw with high-quality TTS, voice cloning, configurable voices, and voice-note friendly output for Telegram and WhatsApp.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","openclaw":"^2026.4.27"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-fish-audio_1.1.0_1777515070415_0.2925040465600961","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@conan-scott/openclaw-fish-audio","version":"1.1.1","keywords":["openclaw","openclaw-plugin","openclaw tts","fish-audio","fish-audio-tts","tts","text-to-speech","speech","speech-provider","voice","voice-cloning","voice-notes","telegram tts","telegram voice","whatsapp tts","whatsapp voice","ai voice","cloned voice"],"author":{"name":"Conan Scott"},"license":"MIT","_id":"@conan-scott/openclaw-fish-audio@1.1.1","maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"dist":{"shasum":"af6abcfc56f453edf50a259530a8a52973175e93","tarball":"https://registry.npmjs.org/@conan-scott/openclaw-fish-audio/-/openclaw-fish-audio-1.1.1.tgz","fileCount":12,"integrity":"sha512-qM9gb69G64yStSe+cWVxUdeb0C87NEgycXDdVMZhyHFinNt0UV8uNkf+cXmIw6g0zHEOqGi3udTWljGFzEeWOg==","signatures":[{"sig":"MEUCIBaNCs85HnDVwFpWlvdfkOiW8ejnDdc21Jmz6UwPfw4+AiEA9s67Eud7o/UtZmgPPetlD1auuaSAZqFnlYiIzLlecVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45055},"type":"module","gitHead":"22402accf7b5ecdd824f97a1bef636e020fbdbab","scripts":{"test":"vitest run","build":"esbuild index.ts speech-provider.ts tts.ts --bundle=false --platform=node --format=esm --target=node22 --outdir=dist --out-extension:.js=.js","prepack":"npm run build"},"_npmUser":{"name":"conanscott","email":"conanscott@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.3-beta.2","pluginSdkVersion":"2026.5.3-beta.2"},"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.31"},"extensions":["./index.ts"],"runtimeExtensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git","type":"git"},"_npmVersion":"11.9.0","description":"Fish Audio speech provider for OpenClaw with high-quality TTS, voice cloning, configurable voices, and voice-note friendly output for Telegram and WhatsApp.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","esbuild":"^0.28.0","openclaw":"^2026.5.3-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-fish-audio_1.1.1_1777849049567_0.4882640723093339","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@conan-scott/openclaw-fish-audio","version":"1.1.2","keywords":["openclaw","openclaw-plugin","openclaw tts","fish-audio","fish-audio-tts","tts","text-to-speech","speech","speech-provider","voice","voice-cloning","voice-notes","telegram tts","telegram voice","whatsapp tts","whatsapp voice","ai voice","cloned voice"],"author":{"name":"Conan Scott"},"license":"MIT","_id":"@conan-scott/openclaw-fish-audio@1.1.2","maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"dist":{"shasum":"c26b5b848da7a5aa8c5e225fc3713d88b2dfd31d","tarball":"https://registry.npmjs.org/@conan-scott/openclaw-fish-audio/-/openclaw-fish-audio-1.1.2.tgz","fileCount":12,"integrity":"sha512-WThpm5L6NUXV/HN2ul5gCTPyc+4rzmqgz8Zuj1+0U29C/+SvYlqP4lf6UU+f9FghY+/OrPj4G2UA6BDGZ1g0MQ==","signatures":[{"sig":"MEYCIQD8tkg0OsuhbSGtyCfOXtw/cdYrR0DrD0COPMXOcjOGFgIhANUl9Caqol6RMnOut3OW8mx0gLxshuu+meKjGACYZb6P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45184},"type":"module","gitHead":"dfe1b76dc0267a3bbc0c04ba87982764a73f66aa","scripts":{"test":"vitest run","build":"esbuild index.ts speech-provider.ts tts.ts --bundle=false --platform=node --format=esm --target=node22 --outdir=dist --out-extension:.js=.js","prepack":"npm run build"},"_npmUser":{"name":"conanscott","email":"conanscott@gmail.com"},"openclaw":{"build":{"openclawVersion":"2026.5.3-beta.2","pluginSdkVersion":"2026.5.3-beta.2"},"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.31"},"extensions":["./dist/index.js"]},"repository":{"url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git","type":"git"},"_npmVersion":"11.9.0","description":"Fish Audio speech provider for OpenClaw with high-quality TTS, voice cloning, configurable voices, and voice-note friendly output for Telegram and WhatsApp.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.0","esbuild":"^0.28.0","openclaw":"^2026.5.3-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-fish-audio_1.1.2_1777850587198_0.21153975366004496","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@conan-scott/openclaw-fish-audio","version":"1.1.6","description":"Fish Audio speech provider for OpenClaw with high-quality TTS, voice cloning, configurable voices, and voice-note friendly output for Telegram and WhatsApp.","type":"module","license":"MIT","author":{"name":"Conan Scott"},"repository":{"type":"git","url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git"},"homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"keywords":["openclaw","openclaw-plugin","openclaw tts","fish-audio","fish-audio-tts","tts","text-to-speech","speech","speech-provider","voice","voice-cloning","voice-notes","telegram tts","telegram voice","whatsapp tts","whatsapp voice","ai voice","cloned voice"],"openclaw":{"extensions":["./dist/index.js"],"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.31"},"build":{"openclawVersion":"2026.5.12","pluginSdkVersion":"2026.5.12"}},"devDependencies":{"openclaw":"^2026.5.12","vitest":"^3.1.0","esbuild":"^0.28.0"},"scripts":{"test":"vitest run","build":"esbuild index.ts speech-provider.ts tts.ts --bundle=false --platform=node --format=esm --target=node22 --outdir=dist --out-extension:.js=.js","prepack":"npm run build"},"gitHead":"6779024dc9936ce07c5fe746bc6d3e8fee041bfe","_id":"@conan-scott/openclaw-fish-audio@1.1.6","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-YJ10LtcomekriCLxppHl9am7K1p+hAonEilBgYHwwYRdan3QDXVZcMh7asqu64MTrud8atTUwNDXd3pjV1r8Pw==","shasum":"b4c69a9dd8931cdfc1be60b421713d374cf19658","tarball":"https://registry.npmjs.org/@conan-scott/openclaw-fish-audio/-/openclaw-fish-audio-1.1.6.tgz","fileCount":12,"unpackedSize":50822,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCp0jK4zVCc8P1jit082ZLTfapHu3AMVUp7IoV7xtpUqAIhAOgdFD2KFURPiJwUWukIyBiyn1zFzJg5VVMLsT6k3yRJ"}]},"_npmUser":{"name":"conanscott","email":"conanscott@gmail.com"},"directories":{},"maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-fish-audio_1.1.6_1778819199168_0.5991031868740919"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-04T01:08:34.583Z","modified":"2026-05-15T04:26:39.419Z","1.0.0":"2026-04-04T01:08:34.811Z","1.1.0":"2026-04-30T02:11:10.565Z","1.1.1":"2026-05-03T22:57:29.739Z","1.1.2":"2026-05-03T23:23:07.346Z","1.1.6":"2026-05-15T04:26:39.287Z"},"bugs":{"url":"https://github.com/Conan-Scott/openclaw-fish-audio/issues"},"author":{"name":"Conan Scott"},"license":"MIT","homepage":"https://github.com/Conan-Scott/openclaw-fish-audio#readme","keywords":["openclaw","openclaw-plugin","openclaw tts","fish-audio","fish-audio-tts","tts","text-to-speech","speech","speech-provider","voice","voice-cloning","voice-notes","telegram tts","telegram voice","whatsapp tts","whatsapp voice","ai voice","cloned voice"],"repository":{"type":"git","url":"git+https://github.com/Conan-Scott/openclaw-fish-audio.git"},"description":"Fish Audio speech provider for OpenClaw with high-quality TTS, voice cloning, configurable voices, and voice-note friendly output for Telegram and WhatsApp.","maintainers":[{"name":"conanscott","email":"conanscott@gmail.com"}],"readme":"# Fish Audio Speech — OpenClaw Plugin\n\n[Fish Audio](https://fish.audio) TTS plugin for [OpenClaw](https://openclaw.ai), with high-quality voice cloning, Telegram/WhatsApp voice replies, and access to 1M+ voices via Fish Audio's voice library. Supports S2-Pro and S1 models.\n\n## Features\n\n- **Voice cloning** — use any Fish Audio voice (your own clones or community voices)\n- **S2-Pro & S1 models** — latest Fish Audio TTS models\n- **Format-aware output** — opus for voice notes (Telegram, WhatsApp), mp3 otherwise\n- **Inline directives** — control voice, speed, model, latency, and sampling per-message\n- **Bundled agent skill** — teaches agents to write Fish-friendly voice text and expressive markers\n- **Voice listing** — browse your cloned voices and popular community voices via `/voice list`\n\n## Installation\n\n```bash\nopenclaw plugins install @conan-scott/openclaw-fish-audio\n```\n\nThen restart OpenClaw.\n\n## Getting an API Key\n\n1. Sign up at [fish.audio](https://fish.audio)\n2. Go to **Account** → **API Keys** → **Create API Key**\n3. Create a revocable key with the minimum access you need\n4. Copy the key for configuration below\n\n## Configuration\n\nPrefer setting the API key as an environment variable or secret:\n\n```bash\nFISH_AUDIO_API_KEY=your-fish-audio-api-key\n```\n\nThen add the provider configuration to your `openclaw.json`:\n\n```json5\n{\n  messages: {\n    tts: {\n      provider: \"fish-audio\",\n      providers: {\n        \"fish-audio\": {\n          voiceId: \"reference-id-of-your-voice\",\n          model: \"s2-pro\",       // s2-pro (default) | s1\n          latency: \"normal\",     // normal (default) | balanced | low\n          // speed: 1.0,         // 0.5–2.0 (optional)\n          // temperature: 0.7,   // 0–1 (optional)\n          // topP: 0.8,          // 0–1 (optional)\n        },\n      },\n    },\n  },\n}\n```\n\nYou can also set `apiKey` directly under `messages.tts.providers.fish-audio`, but secret-backed configuration is safer for shared systems and published examples.\n\nOnly set `baseUrl` for a Fish Audio-compatible endpoint you trust. The plugin sends the Fish Audio API key to that endpoint; custom URLs must use HTTPS except for localhost development.\n\n## Finding a Voice\n\nUse the `/voice list` command in OpenClaw to browse available voices. The plugin shows:\n\n1. **Your cloned/trained voices** (all pages, via `self=true`)\n2. **Popular community voices** (top-ranked by score) as a fallback for new users\n\nYou can also browse voices at [fish.audio](https://fish.audio) and copy the voice ID from the URL.\n\nUse cloned, trained, or community voices only when you have the rights, consent, and authorization to use that voice.\n\n## Inline Directives\n\nAll directive keys are provider-prefixed to avoid collisions with other speech providers. Both `fishaudio_*` and shorter `fish_*` aliases work.\n\n```\n[[tts:fishaudio_voice=<ref_id>]]         Switch voice\n[[tts:fishaudio_speed=1.2]]              Prosody speed (0.5–2.0)\n[[tts:fishaudio_model=s1]]               Model override\n[[tts:fishaudio_latency=low]]            Latency mode\n[[tts:fishaudio_temperature=0.7]]        Sampling temperature (0–1)\n[[tts:fishaudio_top_p=0.8]]              Top-p sampling (0–1)\n```\n\nShort aliases: `fish_voice`, `fish_speed`, `fish_model`, `fish_latency`, `fish_temperature`, `fish_top_p`.\n\n## Expressive Markers\n\nFish Audio understands natural expressive markers in the text itself, such as `(laughs)` or `(sighs)`. OpenClaw does not parse or transform these markers; the plugin passes text verbatim to Fish Audio's `/v1/tts` API. Round-bracket markers are confirmed working. Square-bracket marker syntax is unverified.\n\nFor agent-authored voice messages, avoid Markdown stage directions such as `*laughs*`; some TTS paths may read the asterisks literally. This package includes a `fish-audio-tts` AgentSkill so OpenClaw agents can learn the preferred plain-text style automatically.\n\n## Models\n\n| Model | Description |\n|-------|-------------|\n| `s2-pro` | Latest high-quality model (default) |\n| `s1` | Previous generation, lighter weight |\n\n## Latency Modes\n\n| Mode | Description |\n|------|-------------|\n| `normal` | Best quality, higher latency (default) |\n| `balanced` | Balance between quality and speed |\n| `low` | Fastest response, may reduce quality |\n\n## Troubleshooting\n\n- **No voice configured**: Set `voiceId` in config. Fish Audio has no universal default voice.\n- **Empty voice list**: New users with no cloned voices will see popular community voices as a starting point.\n- **API key missing**: Set either `apiKey` in config or `FISH_AUDIO_API_KEY` env var.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}