# Wyoming Kokoro Torch
[Wyoming protocol](https://github.com/rhasspy/wyoming) server for the original [Kokoro](https://github.com/hexgrad/kokoro/) Torch TTS implementation.
Contrary to other Wyoming implementation, [wyoming-kokoro](https://github.com/nordwestt/kokoro-wyoming/), this is one uses Torch instead of ONNX.
As of the time of writing, our implementation also supports `streaming` mode, while the ONNX one doesn't. Streaming is important for LLM-based assistant,
so that it can start speaking before the LLM is finished generating.
## Local Install
Clone the repository and set up Python virtual environment:
``` sh
git clone https://github.com/debackerl/wyoming-kokoro-torch.cpp.git
cd wyoming-kokoro-torch
script/setup
```
Download the base model:
```sh
mkdir /data
wget -O /data/kokoro-v1_0.pth https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/kokoro-v1_0.pth
wget -O /data/config.json https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/config.json
```
Run a server anyone can connect to:
```sh
script/run --voice af_heart --streaming --uri 'tcp://0.0.0.0:10300' --data-dir /data --download-dir /data
```
See [available voices](https://huggingface.co/hexgrad/Kokoro-82M/tree/main/voices).
## Remarks
If you run this in a VM, you may see `Could not initialize NNPACK! Reason: Unsupported hardware.` in the logs. This seems to happen on heterogeneous CPU architectures,
like my AMD Ryzen AI 7 HX 370. Solutions seems to be either running bare-metal or pass the L3 cache information to the VM and tweak CPU affinity.
Raw data
{
"_id": null,
"home_page": null,
"name": "wyoming-kokoro-torch",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "rhasspy, wyoming, kokoro, tts",
"author": null,
"author_email": "Laurent Debacker <debackerl@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/7f/3c/a8048a34a901d9f05e119088aba26db6f578e56bf745ef7facfe17c4b3d3/wyoming_kokoro_torch-3.2.0.tar.gz",
"platform": null,
"description": "# Wyoming Kokoro Torch\n\n[Wyoming protocol](https://github.com/rhasspy/wyoming) server for the original [Kokoro](https://github.com/hexgrad/kokoro/) Torch TTS implementation.\n\nContrary to other Wyoming implementation, [wyoming-kokoro](https://github.com/nordwestt/kokoro-wyoming/), this is one uses Torch instead of ONNX.\nAs of the time of writing, our implementation also supports `streaming` mode, while the ONNX one doesn't. Streaming is important for LLM-based assistant,\nso that it can start speaking before the LLM is finished generating.\n\n## Local Install\n\nClone the repository and set up Python virtual environment:\n\n``` sh\ngit clone https://github.com/debackerl/wyoming-kokoro-torch.cpp.git\ncd wyoming-kokoro-torch\nscript/setup\n```\n\nDownload the base model:\n\n```sh\nmkdir /data\nwget -O /data/kokoro-v1_0.pth https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/kokoro-v1_0.pth\nwget -O /data/config.json https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/config.json\n```\n\nRun a server anyone can connect to:\n\n```sh\nscript/run --voice af_heart --streaming --uri 'tcp://0.0.0.0:10300' --data-dir /data --download-dir /data\n```\n\nSee [available voices](https://huggingface.co/hexgrad/Kokoro-82M/tree/main/voices).\n\n## Remarks\n\nIf you run this in a VM, you may see `Could not initialize NNPACK! Reason: Unsupported hardware.` in the logs. This seems to happen on heterogeneous CPU architectures,\nlike my AMD Ryzen AI 7 HX 370. Solutions seems to be either running bare-metal or pass the L3 cache information to the VM and tweak CPU affinity.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Wyoming Server for Kokoro Torch",
"version": "3.2.0",
"project_urls": {
"Homepage": "http://github.com/debackerl/wyoming-kokoro-torch"
},
"split_keywords": [
"rhasspy",
" wyoming",
" kokoro",
" tts"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "66c49022e0156f783449c3fd5342ca2bfb306c10d6e89bd29b542169bf985fe8",
"md5": "0a3805afa99682a955dd5ceafe8a30cc",
"sha256": "d22c84d8afd1675f3848f0a59b46ae0f8e5a169ce6597e15237c0ef596da7769"
},
"downloads": -1,
"filename": "wyoming_kokoro_torch-3.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a3805afa99682a955dd5ceafe8a30cc",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 11782,
"upload_time": "2025-10-11T02:44:24",
"upload_time_iso_8601": "2025-10-11T02:44:24.251476Z",
"url": "https://files.pythonhosted.org/packages/66/c4/9022e0156f783449c3fd5342ca2bfb306c10d6e89bd29b542169bf985fe8/wyoming_kokoro_torch-3.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f3ca8048a34a901d9f05e119088aba26db6f578e56bf745ef7facfe17c4b3d3",
"md5": "4e26b0f271f8114cefb1523b518cb463",
"sha256": "1f79431a2770ff732ad9d8ae4c64ecf7f61eda86622f8e7c89eee3174ffb0323"
},
"downloads": -1,
"filename": "wyoming_kokoro_torch-3.2.0.tar.gz",
"has_sig": false,
"md5_digest": "4e26b0f271f8114cefb1523b518cb463",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 13016,
"upload_time": "2025-10-11T02:44:25",
"upload_time_iso_8601": "2025-10-11T02:44:25.189834Z",
"url": "https://files.pythonhosted.org/packages/7f/3c/a8048a34a901d9f05e119088aba26db6f578e56bf745ef7facfe17c4b3d3/wyoming_kokoro_torch-3.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-11 02:44:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "debackerl",
"github_project": "wyoming-kokoro-torch",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "wyoming-kokoro-torch"
}