Write the dialogue.
Melo performs it.
One request can alternate loaded voices and languages, direct the delivery of each line, add exact pauses, and return one finished audio file or stream.
Studio readiness
Good morning. Is the speech service ready for today's demonstration?
Ready and listening. I warmed every language model before you arrived.
Every model? That sounds rather ambitious.
Perhaps. But nobody enjoys waiting for the first sentence.
Dialogue SSML
<speak>
<voice name="EN-BR">
<prosody speed="0.96" pitch="+0.5st">
Good morning. Is the speech service ready for today's demonstration?
</prosody>
</voice>
<break time="180ms"/>
<voice name="EN-US">
<prosody speed="0.92" pitch="-1st">
Ready and listening. I warmed every language model before you arrived.
</prosody>
</voice>
<break time="180ms"/>
<voice name="EN-BR">
<prosody tempo="1.04" pitch="+1st">
Every model? That sounds rather ambitious.
</prosody>
</voice>
<break time="180ms"/>
<voice name="EN-US">
<prosody speed="0.9" volume="0.96">
Perhaps. But nobody enjoys waiting for the first sentence.
</prosody>
</voice>
</speak>
One engine, many directions
Launch roundtable
BritishShall we compare notes before the launch?
AmericanAbsolutely. The application interface is ready, and the audio sounds clear.
AustralianBrilliant. I have checked the container twice.
IndianThen we agree. One service, four English voices, and no extra setup.
View exact SSML
<speak>
<voice name="EN-BR"><prosody speed="0.96">Shall we compare notes before the launch?</prosody></voice>
<break time="150ms"/>
<voice name="EN-US"><prosody speed="1.02" pitch="+0.5st">Absolutely. The application interface is ready, and the audio sounds clear.</prosody></voice>
<break time="150ms"/>
<voice name="EN-AU"><prosody tempo="1.04">Brilliant. I have checked the container twice.</prosody></voice>
<break time="150ms"/>
<voice name="EN_INDIA"><prosody speed="0.94" pitch="-0.5st">Then we agree. One service, four English voices, and no extra setup.</prosody></voice>
</speak>
Multilingual cafe
EnglishWelcome! Is this seat free?
SpanishSí, adelante. Estamos probando una conversación multilingüe.
FrenchParfait ! Chaque phrase utilise son propre modèle vocal.
EnglishAnd the finished dialogue arrives as one audio file.
View exact SSML
<speak>
<voice name="EN-Newest"><prosody speed="0.96" pitch="+0.5st">Welcome! Is this seat free?</prosody></voice>
<break time="180ms"/>
<voice name="ES"><prosody speed="0.94">Sí, adelante. Estamos probando una conversación multilingüe.</prosody></voice>
<break time="180ms"/>
<voice name="FR"><prosody speed="0.95" pitch="+0.5st">Parfait ! Chaque phrase utilise son propre modèle vocal.</prosody></voice>
<break time="180ms"/>
<voice name="EN-Newest"><prosody tempo="1.03">And the finished dialogue arrives as one audio file.</prosody></voice>
</speak>
East Asia check-in
Chinese大家好,今天的语音测试准备好了吗?
Japaneseはい、準備できました。音声はとても自然です。
Korean네, 저도 준비됐어요. 세 가지 언어를 한 파일에 담아 봅시다.
EnglishPerfect. The international check-in is complete.
View exact SSML
<speak>
<voice name="ZH"><prosody speed="0.95">大家好,今天的语音测试准备好了吗?</prosody></voice>
<break time="180ms"/>
<voice name="JP"><prosody speed="0.96">はい、準備できました。音声はとても自然です。</prosody></voice>
<break time="180ms"/>
<voice name="KR"><prosody speed="0.94">네, 저도 준비됐어요. 세 가지 언어를 한 파일에 담아 봅시다.</prosody></voice>
<break time="180ms"/>
<voice name="EN-Newest"><prosody tempo="1.03">Perfect. The international check-in is complete.</prosody></voice>
</speak>
Directed delivery
ProducerFor the next take, say Hangry Labs, then read ticket three hundred and fourteen.
EngineerUnderstood. Ticket three hundred and fourteen is the third item in the queue.
ProducerExport M P 3, pause, and deliver the final line.
EngineerThe recording is ready.
View exact SSML
<speak>
<voice name="EN-Newest">
<prosody speed="1.04" pitch="+2st">For the next take, say <sub alias="Hangry Labs">H L</sub>, then read ticket <say-as interpret-as="number">314</say-as>.</prosody>
<break time="350ms"/>
<prosody speed="0.9" pitch="-1.5st">Understood. Ticket <say-as interpret-as="number">314</say-as> is the <say-as interpret-as="ordinal">3</say-as> item in the queue.</prosody>
<break time="500ms"/>
<prosody tempo="1.06" volume="0.94">Export <say-as interpret-as="characters">MP3</say-as>, pause, and deliver the final line.</prosody>
<break time="700ms"/>
<prosody speed="0.86" pitch="-0.5st">The recording is ready.</prosody>
</voice>
</speak>
Choose the voice, language, and delivery
<voice> changes the performer
Select any speaker from a loaded model. Melo routes that segment through the matching language model automatically, which makes multilingual dialogue reliable.
<speak>
<voice name="EN-Newest">Hello!</voice>
<voice name="ES">¡Hola!</voice>
<voice name="FR">Bonjour !</voice>
</speak>
<prosody> directs a segment
Combine native model speed with post-synthesis pitch, tempo, and volume controls. Nested controls inherit, so each turn only needs the direction that changes.
<speak>
Calm and neutral.
<prosody speed="0.9" pitch="-1st">
Slower and lower.
</prosody>
<prosody tempo="1.1" volume="0.85">
Quicker and quieter.
</prosody>
</speak>
<break>, <sub>, and <say-as>
Control exact pauses, replace labels with spoken text, spell characters, and expand validated numbers or English ordinals without preprocessing the script.
<speak>
Welcome to <sub alias="Hangry Labs">H L</sub>.
<break time="400ms"/>
Build <say-as interpret-as="number">314</say-as>
exports <say-as interpret-as="characters">MP3</say-as>.
</speak>
Generate your own
curl -X POST "http://localhost:8888/tts/generate" \
-H "Content-Type: application/json" \
-d '{"input_type":"ssml","text":"<speak><voice name=\"EN-BR\">Good morning.</voice><break time=\"200ms\"/><voice name=\"EN-US\"><prosody speed=\"0.9\" pitch=\"-1st\">Hello there.</prosody></voice></speak>","language":"EN","speaker_id":"EN-BR","format":"mp3"}' \
-o dialogue.mp3
SSML is explicit and experimental. Adjacent turns use a compact 100 ms handoff; add <break> to choose the complete pause, including 0ms for no gap. Plain text remains the default, and the OpenAI-compatible endpoint accepts plain text only.