{"_id":"@domdhi/claude-code-tts","_rev":"13-8fe98100e32d168ca9b44347697c457e","name":"@domdhi/claude-code-tts","dist-tags":{"latest":"2.4.0"},"versions":{"1.0.0":{"name":"@domdhi/claude-code-tts","version":"1.0.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@1.0.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"7dd593dce9a1ae5dbaa5e66769c91f9604763844","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-1.0.0.tgz","fileCount":10,"integrity":"sha512-tXYs9gudx2g/9mLlggU1/nKJqHmTd2y9dMjacalXgRc5Lm5a90J+Qr1k9Nr0PzX5nrgE/BVhmTz6fGafZVHcPg==","signatures":[{"sig":"MEUCIGBTBwcqNAcVaSeZTg8FdwXTiCpBH/KnKzoIM8vCyIquAiEA5YVSakAc0Q7u5vzagjkthN5hfBUrXyaesCUfke1ibe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54371},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_1.0.0_1772243190881_0.7430149733775635","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@domdhi/claude-code-tts","version":"1.1.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@1.1.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"2ba9b67e0a21e486b4a93b48f19fb5a127e9130d","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-1.1.0.tgz","fileCount":15,"integrity":"sha512-TgQkj5XIBLsAeuPIOXw7ppqKxdq8HtlVLWYFL8ZxBaZzFALyjjv1h+8AtM5euLtvzRft4CiNYpLTGhP0LynHkA==","signatures":[{"sig":"MEQCIB3CtRFsB3SrfrgrPAMbW1DpMEFnJF9O7gQYINU9R00oAiA6YfyWlWRxXBXdY9i+JrQIgMhT7OtIMTK3/kWfK1IVAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60841},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_1.1.0_1772244349803_0.6610242272798994","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@domdhi/claude-code-tts","version":"1.2.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@1.2.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"141076f98d3e114b4e976fa14022700a408937b7","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-1.2.0.tgz","fileCount":15,"integrity":"sha512-Rgih4dx3FJ+83IDGtDJsx467NV7KrcX+WX8/T1KSGqf3Bi/0+tlAGPyqa7s5OiXLmmifvilER9KwL3xsXjlCvw==","signatures":[{"sig":"MEQCIEJQa0XpC63YLjBtH94ObSySwNHe5JlmT+C/OIsMrtYCAiBwu2FNbHvFilqm5NaZMvbMTuTeAulXAQp9xFep5NCKUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61223},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_1.2.0_1772244653057_0.3949862445375196","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@domdhi/claude-code-tts","version":"1.3.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@1.3.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"7a4c581e14097fdb07317cfe1fe6bc0234a449d2","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-1.3.0.tgz","fileCount":15,"integrity":"sha512-jKJdeeepzGKAbSii1SQRpHGHZACVKd7wG96GdgLtO79OasrDQpW1etU4APIX/vJG94wL01fbrstO/k0sxIeU5Q==","signatures":[{"sig":"MEQCIDzo6DVM5KPc9+7YqC1cJmDOhj3wJMGtdBhbDlB5jrnuAiBR3/nGiyH2hQSp4jt7EYDz4UdSE85w/BCtLgszlvjqlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62051},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_1.3.0_1772248322217_0.9679731004336165","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@domdhi/claude-code-tts","version":"1.4.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@1.4.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"a1e2a5124559853b05ec7a0d26a2bb303508b04d","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-1.4.0.tgz","fileCount":15,"integrity":"sha512-U5VBq8SPnAD3G3m0WxtcbDd8kNX2Iz2FGOiv5+g0eGcefaHzKmm9IkbJVwDCkyKx0uKptPH1CMYtBk5x5PY5NA==","signatures":[{"sig":"MEQCIEVR98abIvl5rX+mlF1/kLhfjRBd2RQOQ22MRszrgYDWAiBROrY4Gs6vk6N7wNSOjb5D6NbhwNLEt/CREqfRJL26aQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62297},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_1.4.0_1772249312722_0.7122258225607121","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@domdhi/claude-code-tts","version":"2.0.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.0.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"e2315406f345e4166bbcae3fcf7201a11b50eb7b","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.0.0.tgz","fileCount":15,"integrity":"sha512-pSBSZrtKSVK7apP97070EOP7ZZugcCwU1cGIkFQB4VaJZ1ua/zIroGv0I8EQweBwvCxxJvNH2+/adiqKN8lMHw==","signatures":[{"sig":"MEQCIBjW/NbXwid36MTS66/YC8/BXwi2dRHPQC8E8aZIwtJSAiA8kEjacJS/Ztc0tWERr4cUvCry/D2VMV3pdDrQagWpGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62297},"engines":{"node":">=16"},"gitHead":"7e65fab13f67ed06148121b51351105ed29359e3","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.0.0_1772249953394_0.17486548729773577","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@domdhi/claude-code-tts","version":"2.0.1","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.0.1","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"baf60fa0953217c934ca110c3c79f01d61398238","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.0.1.tgz","fileCount":15,"integrity":"sha512-h9UBz/L45MDPkgxjinmPkGl+vLjhu74D+ngmyZtURuRNaiwhkJK1oGYHb3cYHLczPcL1IviIxLzYtNt1UQQAFw==","signatures":[{"sig":"MEYCIQDUA4lOo8MHYVAGAiEZuMzZ36J7LwfBRmxpbJxYTurV4gIhAJfI9p1GAuljzwmSxfjUmduKKiLXyT484ELpOHS4zOpd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63369},"engines":{"node":">=16"},"gitHead":"39cb8f8e1d9a97730011c7e2c46b24cb53f3350a","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.0.1_1772250786971_0.10663487592664467","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@domdhi/claude-code-tts","version":"2.0.2","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.0.2","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"e5b7cde1bfae21838f2f315eccda9de6fc13d596","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.0.2.tgz","fileCount":15,"integrity":"sha512-e+lRc9W7nPfA3L62JblUkeT+MOTFUMs0Bic6hU0phKiAZ+MnbmSFIbX0eTkMK4Npd6wnx8/r76+JEQ5ScpycWA==","signatures":[{"sig":"MEQCIEArlJJwgHK4+lOEIMcrwUyeRyrDfe9ZanC3P3Wy0QTvAiBp8rVqm0xVCDf6QYO/cRr6r7kLGoXrREPR+m+M/Dg6hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63383},"engines":{"node":">=16"},"gitHead":"4d91c42eee416f579954756851c150dc1cfe93b4","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.0.2_1772251249761_0.8522018720916003","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@domdhi/claude-code-tts","version":"2.0.3","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.0.3","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"169f41882b2c468e6ea58afd0d231616e9ebf176","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.0.3.tgz","fileCount":15,"integrity":"sha512-aI29Cjo5gqOIGidKzZ8igP6/6J3JcTgbM2wiNg/WAeDobAHSGqwLg4uKSD4W3gvOniU46tJRUTLDzhlnWfErUw==","signatures":[{"sig":"MEUCIFCUzffaxOWZ8em0FQl0BqgfKp6D+Vd5YJMLc9Sry+4TAiEA2EW4TuQaomguygX1WC1DMBUAew4DLaucwNvIEiu6k+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63420},"engines":{"node":">=16"},"gitHead":"d47a00f8fd700573b6b5067b4bfed08d0dad2986","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.0.3_1772251302863_0.9017129942188191","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@domdhi/claude-code-tts","version":"2.0.4","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.0.4","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"b30b68c78baebce01dd0baa4177dddb84102d31e","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.0.4.tgz","fileCount":15,"integrity":"sha512-2cY6vsNAyetpZUgY7aZSMyPrVUJr3G1bA51mXgDuqUtTwwsYEpQ9A+rM+vZIp7/GclV/EVAgZ9jNVWoAqfa3IQ==","signatures":[{"sig":"MEQCICvz4kXenZltvk48Ms+h2UY6kXmmjpjxose2Lt1vygQWAiBgSUu/JOC0gMSlXIqOYzOXbYyCl4yfGKG2DHhE5Rrgww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63827},"engines":{"node":">=16"},"gitHead":"ab6dbcb86f47967fe52f6673e3e319ac0ea9b776","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.0.4_1772251414618_0.4335990926850515","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@domdhi/claude-code-tts","version":"2.1.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.1.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"1a482f8dc49dc371d64a4651e0341117416022e7","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.1.0.tgz","fileCount":15,"integrity":"sha512-+gZeHzla1fnauqvTfdrtkU9wDHsZ4qGxEIK88LIwDgUxXDrmOspuvoad1qn2hn61hQOv6tUgNWBhPSeMjJasvg==","signatures":[{"sig":"MEUCIBG0EsfdAooFwaeVLcYTDTVxh3bFma1mhRzTCN7dG7v8AiEAgVxzHVht01OmWMD72tY+fbNGBrJAMM2Dj1aUy6X604Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78555},"engines":{"node":">=16"},"gitHead":"9afb3acc19bdec72ab4a2e7bcc4bad92d009d9d7","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.1.0_1772303722979_0.06849064510163605","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@domdhi/claude-code-tts","version":"2.2.0","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","_id":"@domdhi/claude-code-tts@2.2.0","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"homepage":"https://github.com/domdhi/claude-code-tts#readme","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"bin":{"claude-code-tts":"bin/install.js"},"dist":{"shasum":"2ffb03472f31790d5ab91022184ea767bf596407","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.2.0.tgz","fileCount":15,"integrity":"sha512-qtRkUUoou/MSvIRJ/mXPm2pjcg1s0nMgK9kAITVBE1HSjalJ6++rfGs559hPnlP3LfOg+3tBvNZMEjDqu63LDA==","signatures":[{"sig":"MEYCIQDP6BTaFoFmJliClwW84M75VpuyYakSGFWB/KvV1mbb3gIhAP0HX0OfpEY2vjKTJuG3+0KsLVGY+6WXsdtGV9LUVDds","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83904},"engines":{"node":">=16"},"gitHead":"4304267facca9fe46e0c122ad958210242aaeb2e","_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"repository":{"url":"git+https://github.com/domdhi/claude-code-tts.git","type":"git"},"_npmVersion":"11.6.4","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-code-tts_2.2.0_1772318920006_0.8195566517498833","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@domdhi/claude-code-tts","version":"2.4.0","description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","bin":{"claude-code-tts":"bin/install.js"},"keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"author":{"name":"domdhi"},"license":"MIT","engines":{"node":">=16"},"repository":{"type":"git","url":"git+https://github.com/domdhi/claude-code-tts.git"},"gitHead":"f5c4d26a5e56a45fb11a73b9889d32285ac25f7a","_id":"@domdhi/claude-code-tts@2.4.0","bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"homepage":"https://github.com/domdhi/claude-code-tts#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.4","dist":{"integrity":"sha512-MBUTHztb/m9OUgrqYZncnt4G1wzAQg3rDiHQnfsE+2Ql1oYdcXew6WF8pVRICMmNhkMopy29w0hw90T24Lcy2g==","shasum":"dc651726e61ef50ae29a4aa319149784dac16e9b","tarball":"https://registry.npmjs.org/@domdhi/claude-code-tts/-/claude-code-tts-2.4.0.tgz","fileCount":16,"unpackedSize":99277,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBS/sX6GOpITExxwTk3I762bcze2U44LTivYvgUniVR4AiAYYX/x8pqBTz4/O0EqhAwUhMuj+MCukZGCpOVkJFE4Ug=="}]},"_npmUser":{"name":"domdhi","email":"dom@domdhi.com"},"directories":{},"maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-code-tts_2.4.0_1772324404095_0.2852466165714309"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-28T01:46:30.787Z","modified":"2026-03-01T00:20:04.360Z","1.0.0":"2026-02-28T01:46:31.041Z","1.1.0":"2026-02-28T02:05:49.971Z","1.2.0":"2026-02-28T02:10:53.228Z","1.3.0":"2026-02-28T03:12:02.408Z","1.4.0":"2026-02-28T03:28:32.887Z","2.0.0":"2026-02-28T03:39:13.539Z","2.0.1":"2026-02-28T03:53:07.159Z","2.0.2":"2026-02-28T04:00:49.899Z","2.0.3":"2026-02-28T04:01:43.048Z","2.0.4":"2026-02-28T04:03:34.786Z","2.1.0":"2026-02-28T18:35:23.129Z","2.2.0":"2026-02-28T22:48:40.173Z","2.4.0":"2026-03-01T00:20:04.251Z"},"bugs":{"url":"https://github.com/domdhi/claude-code-tts/issues"},"author":{"name":"domdhi"},"license":"MIT","homepage":"https://github.com/domdhi/claude-code-tts#readme","keywords":["claude","claude-code","tts","text-to-speech","hooks","voice"],"repository":{"type":"git","url":"git+https://github.com/domdhi/claude-code-tts.git"},"description":"Neural TTS hook system for Claude Code. Reads Claude's responses aloud as they finish.","maintainers":[{"name":"domdhi","email":"dom@domdhi.com"}],"readme":"# claude-code-tts\r\n\r\n[![npm](https://img.shields.io/npm/v/@domdhi/claude-code-tts)](https://www.npmjs.com/package/@domdhi/claude-code-tts)\r\n[![npm downloads](https://img.shields.io/npm/dm/@domdhi/claude-code-tts)](https://www.npmjs.com/package/@domdhi/claude-code-tts)\r\n[![license](https://img.shields.io/badge/license-MIT-blue)](#license)\r\n[![platform](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-lightgrey)](#requirements)\r\n[![python](https://img.shields.io/badge/python-3.10%2B-blue)](#requirements)\r\n\r\n> Claude finishes a response. Your speakers read it aloud.\r\n\r\nNeural TTS hook system for [Claude Code](https://claude.ai/code). Hands-free — no copy-paste, no screen-watching. Just code and listen.\r\n\r\n---\r\n\r\n## Install\r\n\r\n```bash\r\n# Project-local (recommended)\r\nnpx @domdhi/claude-code-tts\r\n\r\n# Global — all projects\r\nnpx @domdhi/claude-code-tts --global\r\n```\r\n\r\nRequires Node.js 16+ and Python 3.10+. The installer handles everything else: Python packages, hook scripts, the `/voice` skill, status line, and settings — one command, no build tools. It also offers optional setup for:\r\n\r\n- **Offline fallback** (kokoro-onnx) — local TTS when you're offline\r\n- **Session pool** — auto-assign unique voices when running multiple CC instances\r\n- **CLAUDE.md snippet** — makes Claude write spoken prose instead of markdown when voice is active\r\n\r\n---\r\n\r\n## How It Works\r\n\r\nThree Claude Code hooks wire into the response lifecycle:\r\n\r\n| Hook | Fires when | File |\r\n|------|------------|------|\r\n| `Stop` | Claude finishes any response | `stop.py` |\r\n| `PostToolUse:Task` | A subagent completes | `task-hook.py` |\r\n| `UserPromptSubmit` | You type `/voice` commands | `repeat.py` |\r\n\r\nA persistent background daemon (`daemon.py`) keeps the TTS model warm. Hook scripts connect to it over TCP on localhost — it starts automatically on the first response and stays running between turns.\r\n\r\n**Engine priority:** Edge TTS (Microsoft neural voices, free, cloud) → kokoro-onnx (local fallback, activates automatically if Edge TTS fails or you're offline)\r\n\r\n**Status line** shows TTS state and current voice at the bottom of Claude Code (e.g. `TTS on | Nova`).\r\n\r\n---\r\n\r\n## Commands\r\n\r\nEverything goes through `/voice`:\r\n\r\n| Command | Effect |\r\n|---------|--------|\r\n| `/voice` | Toggle TTS on/off |\r\n| `/voice on` | Enable TTS |\r\n| `/voice off` | Disable TTS and stop playback |\r\n| `/voice stop` | Stop current speech |\r\n| `/voice repeat` | Replay last response |\r\n| `/voice read <file>` | Read a file or folder aloud |\r\n| `/voice change <name>` | Change voice (e.g. `onyx`, `heart`, `nova`) |\r\n| `/voice <name> [faster\\|slower]` | Quick voice + speed change |\r\n\r\nSimple commands (`on`/`off`/`stop`/`repeat`/toggle) are handled instantly by the hook — no LLM roundtrip. `change` and `read` use the skill for natural language processing.\r\n\r\n---\r\n\r\n## Voices\r\n\r\n21 built-in voices — 11 American + 10 accent voices. Use `/voice change` interactively or `/voice change <name>` directly:\r\n\r\n**American**\r\n\r\n| Name | Style | Gender |\r\n|------|-------|--------|\r\n| Heart | Warm, natural *(default)* | Female |\r\n| Bella | Polished, smooth | Female |\r\n| Sarah | Professional, clear | Female |\r\n| Sky | Friendly, conversational | Female |\r\n| Nova | Energetic, bright | Female |\r\n| Michael | Natural, authoritative | Male |\r\n| Adam | Deep, resonant | Male |\r\n| Echo | Casual, relaxed | Male |\r\n| Eric | Confident, direct | Male |\r\n| Liam | Young, energetic | Male |\r\n| Onyx | Deep, authoritative | Male |\r\n\r\n**Accents**\r\n\r\n| Name | Accent | Style | Gender |\r\n|------|--------|-------|--------|\r\n| Sonia | British | Warm, polished | Female |\r\n| Maisie | British | Young, cheerful | Female |\r\n| Ryan | British | Balanced, clear | Male |\r\n| Thomas | British | Refined, distinguished | Male |\r\n| Natasha | Australian | Friendly, natural | Female |\r\n| William | Australian | Confident, warm | Male |\r\n| Neerja | Indian | Expressive, warm | Female |\r\n| Prabhat | Indian | Clear, professional | Male |\r\n| Emily | Irish | Soft, melodic | Female |\r\n| Connor | Irish | Warm, natural | Male |\r\n\r\nNatural language works too: `/voice bubbly girl faster` or `/voice british male` or `/voice australian`\r\n\r\n**Need more?** Edge TTS has 48+ English voices across 14 locales. Add any Edge TTS voice directly to `voices.json` — see [INSTALL.md](INSTALL.md#custom-edge-tts-voices) for details.\r\n\r\n**Per-agent**, **per-project**, and **per-session** voice routing via `voices.json` — see [INSTALL.md](INSTALL.md) for details. Running multiple CC instances? Add a `session_pool` and each instance gets its own voice automatically.\r\n\r\n---\r\n\r\n## TTS-Optimized Responses\r\n\r\nBy default, the hooks strip markdown before reading — but code blocks become `[code block]` and tables turn to mush. For better results, tell Claude to write spoken prose when voice is active.\r\n\r\nThe installer ships a ready-to-paste `CLAUDE.md` snippet at `.claude/hooks/tts/CLAUDE_SNIPPET.md`. Add it to your project's `CLAUDE.md`:\r\n\r\n```bash\r\ncat .claude/hooks/tts/CLAUDE_SNIPPET.md >> CLAUDE.md\r\n```\r\n\r\nWith this, Claude detects voice mode and writes flowing sentences instead of bullet-heavy markdown. Code blocks still work for actual code — only the explanatory text changes.\r\n\r\n---\r\n\r\n## Offline Fallback\r\n\r\nkokoro-onnx is an optional local engine that kicks in automatically when Edge TTS is unavailable. Models install once globally (~340MB) and are shared by all projects:\r\n\r\n```bash\r\npip install kokoro-onnx\r\n```\r\n\r\nSee [INSTALL.md](INSTALL.md) for model download steps. The daemon detects it automatically; no config change needed.\r\n\r\n---\r\n\r\n## Requirements\r\n\r\n- **Claude Code** (obviously)\r\n- **Python 3.10+** — hooks run in Python\r\n- **Node.js 16+** — only needed for `npx` install\r\n- **Internet** — for Edge TTS primary engine (or install the offline fallback)\r\n- Python packages: `edge-tts`, `miniaudio`, `sounddevice`, `cffi` *(installed automatically)*\r\n\r\n---\r\n\r\n## Full Docs\r\n\r\n[INSTALL.md](INSTALL.md) covers manual install, all settings, voice priority rules, daemon protocol, performance tuning, and troubleshooting.\r\n\r\n[CHANGELOG.md](CHANGELOG.md) tracks all changes.\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT — see [LICENSE](LICENSE)\r\n","readmeFilename":"README.md"}