Add Colab example (#67)
Thank you @HarishDevLab for the suggestion, I just reimplemented the PR to link to a version-controlled notebook.
This commit is contained in:
@@ -59,6 +59,8 @@ for each voice.
|
|||||||
* [azelma](https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p303_023.wav)
|
* [azelma](https://huggingface.co/kyutai/tts-voices/blob/main/vctk/p303_023.wav)
|
||||||
|
|
||||||
The `--voice` argument can also take a plain wav file as input for voice cloning.
|
The `--voice` argument can also take a plain wav file as input for voice cloning.
|
||||||
|
You can use your own or check out our [voice repository](https://huggingface.co/kyutai/tts-voices).
|
||||||
|
|
||||||
Feel free to check out the [generate documentation](https://github.com/kyutai-labs/pocket-tts/tree/main/docs/generate.md) for more details and examples.
|
Feel free to check out the [generate documentation](https://github.com/kyutai-labs/pocket-tts/tree/main/docs/generate.md) for more details and examples.
|
||||||
For trying multiple voices and prompts quickly, prefer using the `serve` command.
|
For trying multiple voices and prompts quickly, prefer using the `serve` command.
|
||||||
|
|
||||||
@@ -76,6 +78,8 @@ You can check out the [serve documentation](https://github.com/kyutai-labs/pocke
|
|||||||
|
|
||||||
## Using it as a Python library
|
## Using it as a Python library
|
||||||
|
|
||||||
|
You can try out the Python library on Colab [here](https://colab.research.google.com/github/kyutai-labs/pocket-tts/blob/main/docs/pocket-tts-example.ipynb).
|
||||||
|
|
||||||
Install the package with
|
Install the package with
|
||||||
```bash
|
```bash
|
||||||
pip install pocket-tts
|
pip install pocket-tts
|
||||||
@@ -90,7 +94,10 @@ import scipy.io.wavfile
|
|||||||
|
|
||||||
tts_model = TTSModel.load_model()
|
tts_model = TTSModel.load_model()
|
||||||
voice_state = tts_model.get_state_for_audio_prompt(
|
voice_state = tts_model.get_state_for_audio_prompt(
|
||||||
"hf://kyutai/tts-voices/alba-mackenna/casual.wav"
|
"alba" # One of the pre-made voices, see above
|
||||||
|
# You can also use any voice file you have locally or from Hugging Face:
|
||||||
|
# "./some_audio.wav"
|
||||||
|
# or "hf://kyutai/tts-voices/expresso/ex01-ex02_default_001_channel2_198s.wav"
|
||||||
)
|
)
|
||||||
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
|
audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.")
|
||||||
# Audio is a 1D torch tensor containing PCM data.
|
# Audio is a 1D torch tensor containing PCM data.
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "OiFxAw6MoHnp"
|
||||||
|
},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Locally, we recommend using `uv` over `pip`\n",
|
||||||
|
"!pip install pocket-tts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "FfBHOrFcU0gI"
|
||||||
|
},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import scipy.io.wavfile\n",
|
||||||
|
"from IPython.display import Audio\n",
|
||||||
|
"\n",
|
||||||
|
"from pocket_tts import TTSModel\n",
|
||||||
|
"\n",
|
||||||
|
"# The pre-defined voices are alba, marius, javert, jean, fantine, cosette, eponine, and azelma.\n",
|
||||||
|
"# You can also clone any voice you'd like by passing a file path!\n",
|
||||||
|
"# For voice cloning, please go to https://huggingface.co/kyutai/pocket-tts\n",
|
||||||
|
"# and accept the terms, then make sure you're logged in locally with `uvx hf auth login`.\n",
|
||||||
|
"voice = \"alba\"\n",
|
||||||
|
"\n",
|
||||||
|
"tts_model = TTSModel.load_model()\n",
|
||||||
|
"voice_state = tts_model.get_state_for_audio_prompt(voice)\n",
|
||||||
|
"\n",
|
||||||
|
"# Audio is a 1D torch tensor containing PCM data\n",
|
||||||
|
"audio = tts_model.generate_audio(voice_state, \"Hello world, this is a test.\")\n",
|
||||||
|
"\n",
|
||||||
|
"# You can also find the output in the files tab on the left\n",
|
||||||
|
"scipy.io.wavfile.write(\"output.wav\", tts_model.sample_rate, audio.numpy())\n",
|
||||||
|
"\n",
|
||||||
|
"Audio(audio.numpy(), rate=tts_model.sample_rate)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {
|
||||||
|
"id": "gbnHfLwbo5W8"
|
||||||
|
},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"colab": {
|
||||||
|
"provenance": []
|
||||||
|
},
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "pocket-tts",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.10.16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 0
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user