irulkenzei/voice_over_app
Coqui XTTS-v2: Multilingual Text To Speech Voice Cloning
Run irulkenzei/voice_over_app with an API
Use one of our client libraries to get started quickly. Clicking on a library will take you to the Playground tab where you can tweak different inputs, see the results, and copy the corresponding code to use in your own project.
Input schema
The fields you can use to run this model with an API. If you don't give a value for a field its default value will be used.
| Field | Type | Default value | Description |
|---|---|---|---|
| text |
string
|
|
Teks yang akan disintesis menjadi ucapan (mode single-speaker, biarkan kosong kalau pakai 'script')
|
| speaker_wav |
string
|
File audio referensi suara untuk voice cloning (mode single-speaker, wajib diisi kalau 'text' dipakai)
|
|
| script |
string
|
|
Skrip dialog multi-speaker (mode dialog). Format per baris: '[Nama Speaker]: teks...'. Baris tanpa tag dianggap lanjutan speaker sebelumnya. Kalau diisi, 'text'/'speaker_wav' diabaikan -- pakai 'speaker_map' untuk assign voice ke tiap nama.
|
| speaker_map |
string
|
{}
|
JSON string mapping nama speaker -> URL speaker_wav, mis. '{"Ayah": "https://.../ayah.wav", "Anak": "https://.../anak.wav"}'. Wajib diisi kalau 'script' dipakai.
|
| speaker_pause_ms |
integer
|
500
Max: 3000 |
Jeda otomatis (ms) tiap pergantian giliran bicara di mode dialog
|
| language |
string
|
en
|
Kode bahasa (mis. 'en', 'id', 'es')
|
| speed |
number
|
1
Min: 0.5 Max: 2 |
Kecepatan bicara (0.5 - 2.0)
|
| temperature |
number
|
0.7
Min: 0.1 Max: 1 |
Temperature sampling XTTS (0.1 - 1.0)
|
| output_format |
None
|
wav
|
Format file audio output
|
| chunk_by_punctuation |
boolean
|
True
|
Pecah teks otomatis per '.'/',' dengan silence manual (mengurangi drift/halusinasi pada teks panjang)
|
| comma_pause_ms |
integer
|
300
Max: 3000 |
Durasi jeda (ms) setelah koma
|
| period_pause_ms |
integer
|
600
Max: 3000 |
Durasi jeda (ms) setelah titik
|
| background_music |
string
|
File musik latar opsional. Otomatis di-duck (volume diperhalus sementara) setiap kali ada narasi berbicara, dan naik lagi secara halus saat narasi diam -- audio ducking otomatis.
|
|
| music_volume_db |
number
|
-6
Min: -30 |
Volume dasar musik latar dalam dB relatif ke file aslinya (negatif = lebih pelan dari file asli). Musik akan otomatis lebih redup lagi saat narasi bicara (ducking), lalu kembali ke level ini saat narasi diam.
|
{
"type": "object",
"title": "Input",
"properties": {
"text": {
"type": "string",
"title": "Text",
"default": "",
"x-order": 0,
"description": "Teks yang akan disintesis menjadi ucapan (mode single-speaker, biarkan kosong kalau pakai 'script')"
},
"speed": {
"type": "number",
"title": "Speed",
"default": 1,
"maximum": 2,
"minimum": 0.5,
"x-order": 6,
"description": "Kecepatan bicara (0.5 - 2.0)"
},
"script": {
"type": "string",
"title": "Script",
"default": "",
"x-order": 2,
"description": "Skrip dialog multi-speaker (mode dialog). Format per baris: '[Nama Speaker]: teks...'. Baris tanpa tag dianggap lanjutan speaker sebelumnya. Kalau diisi, 'text'/'speaker_wav' diabaikan -- pakai 'speaker_map' untuk assign voice ke tiap nama."
},
"language": {
"type": "string",
"title": "Language",
"default": "en",
"x-order": 5,
"description": "Kode bahasa (mis. 'en', 'id', 'es')"
},
"speaker_map": {
"type": "string",
"title": "Speaker Map",
"default": "{}",
"x-order": 3,
"description": "JSON string mapping nama speaker -> URL speaker_wav, mis. '{\"Ayah\": \"https://.../ayah.wav\", \"Anak\": \"https://.../anak.wav\"}'. Wajib diisi kalau 'script' dipakai."
},
"speaker_wav": {
"type": "string",
"title": "Speaker Wav",
"format": "uri",
"x-order": 1,
"description": "File audio referensi suara untuk voice cloning (mode single-speaker, wajib diisi kalau 'text' dipakai)"
},
"temperature": {
"type": "number",
"title": "Temperature",
"default": 0.7,
"maximum": 1,
"minimum": 0.1,
"x-order": 7,
"description": "Temperature sampling XTTS (0.1 - 1.0)"
},
"output_format": {
"enum": [
"wav",
"mp3",
"ogg",
"flac",
"m4a"
],
"type": "string",
"title": "output_format",
"description": "Format file audio output",
"default": "wav",
"x-order": 8
},
"comma_pause_ms": {
"type": "integer",
"title": "Comma Pause Ms",
"default": 300,
"maximum": 3000,
"minimum": 0,
"x-order": 10,
"description": "Durasi jeda (ms) setelah koma"
},
"music_volume_db": {
"type": "number",
"title": "Music Volume Db",
"default": -6,
"maximum": 0,
"minimum": -30,
"x-order": 13,
"description": "Volume dasar musik latar dalam dB relatif ke file aslinya (negatif = lebih pelan dari file asli). Musik akan otomatis lebih redup lagi saat narasi bicara (ducking), lalu kembali ke level ini saat narasi diam."
},
"period_pause_ms": {
"type": "integer",
"title": "Period Pause Ms",
"default": 600,
"maximum": 3000,
"minimum": 0,
"x-order": 11,
"description": "Durasi jeda (ms) setelah titik"
},
"background_music": {
"type": "string",
"title": "Background Music",
"format": "uri",
"x-order": 12,
"description": "File musik latar opsional. Otomatis di-duck (volume diperhalus sementara) setiap kali ada narasi berbicara, dan naik lagi secara halus saat narasi diam -- audio ducking otomatis."
},
"speaker_pause_ms": {
"type": "integer",
"title": "Speaker Pause Ms",
"default": 500,
"maximum": 3000,
"minimum": 0,
"x-order": 4,
"description": "Jeda otomatis (ms) tiap pergantian giliran bicara di mode dialog"
},
"chunk_by_punctuation": {
"type": "boolean",
"title": "Chunk By Punctuation",
"default": true,
"x-order": 9,
"description": "Pecah teks otomatis per '.'/',' dengan silence manual (mengurangi drift/halusinasi pada teks panjang)"
}
}
}
Output schema
The shape of the response you’ll get when you run this model with an API.
{
"type": "string",
"title": "Output",
"format": "uri"
}