Commit Graph
87 Commits
Author SHA1 Message Date
Prabhudayal Vaishnav 61d4b1c23b feat: add docker-compose.yaml with model cache persistence (#64)
Closes #28
2026-02-02 15:52:11 +01:00
Václav Volhejn 6ee89b12ff Mention slaughters85j/pocket-tts repo 2026-01-30 11:32:21 +01:00
Václav Volhejn 28b8244428 Improve consistency in variant -> config rename (#87)
Small follow-up on #59
2026-01-27 08:55:34 +00:00
teddybear082 2b51649a65 Basic changes to allow loading of local model files (#59)
-modify main,py to not hardcode using DEFAULT_VARIANT

-allow submission of path string to path of variant.yaml file saved in
custom directory in lieu of model variant identifier in CLI to use when
loading model

-addresses #57
2026-01-27 09:42:35 +01:00
Václav Volhejn 77cc74a443 Clarifications regarding voices + fix missing @classmethod (#86) 2026-01-26 12:46:44 +01:00
thataboyandVáclav Volhejn edec7f8790 Add .safetensors save/load to get_state_for_audio_prompt (#69)
Quality of life improvement to save user voice embedding as a
.safetensors file that can be loaded for subsequent use, achieving the
same efficiency as the predefined voices, all via the existing
get_state_for_audio_prompt function.

---------

Co-authored-by: Václav Volhejn <8401624+vvolhejn@users.noreply.github.com>
2026-01-26 10:36:27 +01:00
Václav Volhejn bfbaf80437 Bump version to 1.0.3 2026-01-22 12:02:14 +01:00
Václav Volhejn a3aaa135bd Add links to more community implementations for browsers (#77) 2026-01-22 11:30:36 +01:00
Saleem DjimaandVáclav Volhejn 4ec89acf95 Feat/add chunk size control arg (#56)
This pull request addresses issue #38 

**Changes included:**

- Added a `max_tokens` parameter to the typer cli for the `generate`
command, allowing user to set a default number of tokens per chunk.
- Introduced a default variable `MAX_TOKEN_PER_CHUNK` to centralize the
default value.
- Fixed a tokenization issue by inserting a comma, allowing the model to
correctly read each chunk as intended rather than treating one chunk as
a single sentence.

**Future improvement suggestion :**

- Consider enhancing the `split_into_best_sentences` function using
regex to split text more accurately without modifying it, which would
improve clarity and maintainability.

---------

Co-authored-by: Václav Volhejn <8401624+vvolhejn@users.noreply.github.com>
2026-01-21 11:54:53 +01:00
BatteryShark 36f21a0a7f fix: respect frames_after_eos parameter in generate_audio_stream() (#58)
The `frames_after_eos` parameter in `generate_audio_stream()` and
`generate_audio()` was accepted but never used - the code always used
the auto-calculated guess.

**Before:** User passes `frames_after_eos=0` → ignored, uses guess (3+
frames of silence)
**After:** User passes `frames_after_eos=0` → respected, minimal
trailing silence

Default behavior preserved when `frames_after_eos=None`.

I *think* this is the intention of that argument.
2026-01-21 11:31:25 +01:00
Václav Volhejn 2d62797f28 Fix temp file issue on windows (I hope) (#72)
Thank you @Arihant25, re-integrating the changes from your PR because
Gabriel is not here to do his fix.

The plan was to get rid of the temporary file altogether and pass a
file-like object, but in the meantime let's at least have something that
works.
2026-01-21 10:54:03 +01:00
Václav Volhejn 9650c0775b Bump version to 1.0.2 2026-01-20 11:04:41 +01:00
bedd1c4098 feat(voice/clone): support MP3 and other audio formats for reference voices (#20)
## Summary
- Adds support for MP3, FLAC, OGG, and other audio formats when
uploading reference voices for cloning
- Replace WAV-only `audio_read()` with a `soundfile`-based
implementation
- Update web UI file picker to accept multiple audio formats

## Changes
- `pocket_tts/data/audio.py`: Use `soundfile` library instead of
Python's `wave` module
- `pocket_tts/main.py`: Preserve original file extension in temp files
for format detection
- `pocket_tts/main.py`: Add missing `truncate=True` to CLI generate
command
- `pocket_tts/static/index.html`: Update file input to accept
`.wav,.mp3,.flac,.ogg,.m4a,audio/*`
- `pyproject.toml`: Add `soundfile>=0.12.0` dependency

## Tested
- [x] Upload a WAV file as reference voice and generate speech
- [x] Upload an MP3 file as reference voice and generate speech
- [x] Upload a FLAC file as reference voice and generate speech
- [x] Verify CLI `--voice` option works with MP3 files

---------

Co-authored-by: Gabriel de Marmiesse <gabrieldemarmiesse@gmail.com>
Co-authored-by: Václav Volhejn <8401624+vvolhejn@users.noreply.github.com>
2026-01-20 10:12:50 +01:00
Václav Volhejn 6f9dd250c2 Add Colab example (#67)
Thank you @HarishDevLab for the suggestion, I just reimplemented the PR
to link to a version-controlled notebook.
2026-01-19 10:29:53 +00:00
Manu Orsini 83eac9f5c7 Update README.md 2026-01-19 11:10:43 +01:00
Václav Volhejn 630d519b32 Doc fixes 2026-01-19 10:49:03 +01:00
Arihant Tripathy 8cadf71b0f Slice the kvcache when getting the model state for a given voice (#32)
Related to #14
2026-01-17 15:55:57 +01:00
Gabriel de Marmiesse 54e9257dbe Add the Rust version in alternative implementations (#55)
Credit goes to @babybirdprd !
2026-01-17 15:24:35 +01:00
Ian Kidd d35bf81469 Add link for pocket-tts-wyoming project (#48) 2026-01-17 15:20:07 +01:00
Gabriel de Marmiesse 8a2a29efe9 Use an environment to push to pypi (#54)
By using an environment to push to pypi, we disallow people who don't
have approval rights from using it, allow us to be more flexible with
the CI
2026-01-17 15:09:54 +01:00
Gabriel de Marmiesse 636ec2360d Do not use auth in the CI (#53)
Allows anyone to run the CI
2026-01-17 14:58:36 +01:00
Lukas Werner f8f25eac00 Add 'Projects using' Section (#45)
After reading #39 I wanted to showcase my quick little project
[pocket-reader](https://github.com/lukasmwerner/pocket-reader) and
followed the suggestion in that issue to make a section for 'Projects
Using'
2026-01-17 14:36:05 +01:00
Gabriel de Marmiesse c4960e6fd9 Add rules and some other misc notes (#35) 2026-01-15 21:27:58 +01:00
Václav Volhejn d1619d01dd Update logo (#34) 2026-01-15 17:59:02 +01:00
Gabriel de Marmiesse 46bb28f448 Pin the versions of the files we're using and allow offline use (#27)
Without a specific commit, huggingface cannot be sure that the file has
not changed, so it needs to do a quick query to hf hub to check that
there were no new commits. This adds some latency to the CLI and
function calls, but it also prevents offline use, even if the files are
already present locally. This PRs fixes this. Now with the commit hash,
hf has the guarantee that the local files are the right ones and thus
doesn't need to query the hub every time.

Fix https://github.com/kyutai-labs/pocket-tts/pull/21
2026-01-14 12:55:38 +01:00
gabrieldemarmiesse 4381db0fab Bump version to 1.0.1 2026-01-13 18:07:48 +01:00
Gabriel de Marmiesse 222714c495 Fix memory leak by using no_grad in all threads (#16)
`torch.no_grad` is thread local, I now run the autoregressive generation
in a separate thread, in addition of the thread running mimi, and forgot
to add `torch.no_grad` to the function inside this thread.
2026-01-13 18:07:02 +01:00
gabrieldemarmiesse b2397fcbcf Update the AGENTS.md with more recent information 2026-01-13 14:50:05 +01:00
gabrieldemarmiesse b05a9d061b Bump version to 1.0.0 2026-01-13 11:50:33 +01:00
gabrieldemarmiesse 424674fa3d Fix html 2026-01-13 11:30:33 +01:00
Gabriel de Marmiesse 366aa68c23 Change voices available without voice cloning (#12) 2026-01-13 11:06:23 +01:00
gabrieldemarmiesse f5b66f6e3e Minor readme modifications 2026-01-12 17:30:45 +01:00
Gabriel de Marmiesse 2ba3b64f52 Allow and handle infinitely long text inputs (#11)
Fix #5
2026-01-12 17:16:24 +01:00
Gabriel de Marmiesse aab9443122 Give priority to the wav upload in the html page (#9) 2026-01-12 15:02:14 +01:00
Gabriel de Marmiesse becd3137a1 Use the new checkpoints structure (#10) 2026-01-12 12:56:13 +01:00
Gabriel de Marmiesse d4004e513e Fix the CI (#8) 2026-01-12 11:47:04 +01:00
gabrieldemarmiesse f5fa328a58 Copy the files in the new repo for public release 2026-01-12 11:25:16 +01:00