Customizing speech synthesis

Tailor your assistant's speech to echo your brand's unique tone and personality. With a suite of customization tools, you can fine-tune pitch, speed, accents, and even add a sprinkle of emotion.​

LetΒ΄s start with it

Craft compelling texts for your digital voice assistant. Insert your message into the Speech text window in the Message node.

Expand to learn more

Text in the Speech window will be used as input for speech synthesis. Customize your text with SSML for even better results.

For top-notch voice synthesis, we've got some copywriting secrets up our sleeve! Check out our tips and tricks on crafting texts that convert beautifully into speech.

πŸ€– Provider of text-to-speech technology and choice of neural voice depends on your project configuration. Typically, we rely on Microsoft Azure as our primary text-to-speech provider. However, we're not limited to just one option! We also work with Google and other text-to-speech services, offering the possibility of custom neural voices for that extra touch of uniqueness.


Speech synthesis markup language (SSML)

Get ready to fine-tune your digital assistant's voice with some SSML magic! πŸͺ„ Let's play with pitches, pauses, and personalities.

SSML stands for Speech Synthesis Markup Language, and it is an XML-based markup language used to control the synthesis of text-to-speech output. SSML provides a way to specify the pronunciation, intonation, and other aspects of the synthesized speech, giving developers fine-grained control over how the text is spoken.

Some examples of what can be controlled with SSML include:

  • Voice selection: You can choose from a variety of pre-defined voices, including different genders, accents, and languages, or even specify a custom voice using SSML. SSML is used in a variety of applications, such as voice assistants, text-to-speech software, and automated voice response systems, to provide a more natural and user-friendly experience for users.

  • Pronunciation: You can specify the pronunciation of a word or phrase, including how individual phonemes should be pronounced.

  • Prosody: You can control the pitch, volume, and rate of the speech, as well as insert pauses, emphasis, and other effects to give the synthesized speech a more natural-sounding intonation and rhythm.


SSML tags

In the context of SSML, tags are elements of XML markup language that are used to provide instructions for controlling the synthesis of text-to-speech output. These tags are enclosed within angle brackets (< and >), and are used to define specific elements or attributes that are recognized by SSML processors.

Generally, there are two types of tags:

Pair tags, also known as start tags and end tags, consist of two tags that surround a block of content. The first tag is the start tag, and it begins with the name of the element enclosed in angle brackets (< and >). The second tag is the end tag, which begins with a forward slash (/) followed by the name of the element enclosed in angle brackets.

Pair tags define an element that has a beginning and an end, and the content between the tags is considered to be the value of the element.

<prosody> - start tag </prosody> - end tag

<prosody> ... </prosody>

This sentences in not affected by SSML. <prosody> This sentence is modulated with prosody. </prosody> This sentence is no more affected by SSML, as second sentence was enclosed with end tag.
Additional information

Tags can also include attributes, which provide additional information about the element they modify. For example, the <prosody> tag can include the pitch, rate, and volume attributes to control various aspects of the speech.

  • <prosody pitch="+10%" rate="90%"> This sentence will be spoken with a higher pitch (+ 10 %) and slower rate (-10 % or 90 % of default </prosody>

  • The following text will be spoken as individual digits: <say-as interpret-as="digits">1234</say-as>

  • The following sentence will be spoken with a two-second pause in the middle: Hello, <break time="2s"/>world!

Taking the closer look

Delve into the Essential SSML Tags: Enhancing Your Assistant's Voice with Tag Mastery

<break> allows you to insert a pause in the speech. The time attribute specifies the duration of the pause, and the strength attribute specifies the strength of the pause.

<break time="10ms"/>

Pause of 10 miliseconds

<break strength="strong"/>

Pause of set strenght Possible attribute values: x-weak, weak, medium, strong, x-strong

<break time="500ms" strength="weak"/>

Pause od 500 milliseconds and set strength

<break time ="50%"/>

Pause lasting 50 % of default

<break time = "1"/>

Pause of 1 second


Tags usage

SSML code is written in XML format and is typically embedded within the text of the document that is being processed by a text-to-speech system. Here's an example of what SSML code might look like:

Hey there' <prosody rate ="slow">I'm your friendly virtual assistant. </prosody> <break time="500ms/><prosody volume="loud"> How can I help you today?</prosody>

To use SSML-enriched text as output in your digital assistant, copy it in the Speech window in MSG_NODE in the Flow editor.


Tips and trick

Copywriting for your digital assistant should be simple and straightforward to make it easy for users to understand. It is essential to use clear and understandable questions that help the customer formulate their answers. If possible, it is helpful to use the same natural language and words, phrasing, and lexicon that are commonly used in everyday life. This will make it easier to communicate with the voicebot.

Keynotes:

In the case of voicebot, you do not have to stick to spelling and grammar as in other types of communication. Of course, spelling and grammar are still important and have a very strong influence on synthesis quality.

However in some cases, grammatically, orthographically and typologically correct text can lead to a result that is not pleasant to listen to, negatively affecting intonation and spoiling the quality of the synthesis.

Therefore, work consciously with this characteristic of the synthetic voice and make "mistakes" on purpose. E.g., deleting or adding commas in a sentence, can significantly improve to the quality of the synthesis.

Deliberately using the wrong spelling can also have its advantages and, in some cases, improves the pronunciation of certain words or phrases.

Copywriting structure

Sentence structure

The two basic components of a sentence are topic (tΓ©ma) and comment (rhΓ©ma). The topic is the word or group of words that determine what the sentence is about, while the rheme is part of the sentence that follows and completes the topic. For example, in the sentence "My dog's name is Max", the topic is "My dog" and the rheme is "is named Max". Topic and rheme are important for proper sentence construction and are essential for understanding meaning.

The flexibility in word order is a distinctive feature of Slavic languages, particularly Czech and Slovak, due to their rich inflectional systems.

Order of words is important in SK, CZ language

Changing the word order in a sentence can affect what information we consider important:

CZ:
Petr pΕ™iΕ‘el pozdΔ› do Ε‘koly. 
     # Important = exactly where (to school, not to date) 
Petr do Ε‘koly pΕ™iΕ‘el pozdΔ›. 
     # Important = exactly when (late, not on time)
Do Ε‘koly pΕ™iΕ‘el pozdΔ› Petr. 
     # Important = exactly who (Petr, not Pavel)

Changing the word order can therefore affect which information is emphasised.

CZ:
Klient si mΕ―ΕΎe zvolit, zda chce spoΕ™it na účtu nebo investovat do podΓ­lovΓ½ch fondΕ―. 
Zda chce spoΕ™it na účtu nebo investovat do podΓ­lovΓ½ch fondΕ―, si mΕ―ΕΎe klient zvolit. 

ProsΓ­m, pečlivΔ› si pročtΔ›te obchodnΓ­ podmΓ­nky. 
ObchodnΓ­ podmΓ­nky si prosΓ­m pročtΔ›te pečlivΔ›. 

PravdΔ›podobnΔ› jste se stali terčem podvodnΓ­ka. Ihned musΓ­me zablokovat platebnΓ­ kartu. 
PravdΔ›podobnΔ› jste se stali terčem podvodnΓ­ka. PlatebnΓ­ kartu musΓ­me zablokovat ihned.`


---------

SK:
Klient si mΓ΄ΕΎe zvoliΕ₯, či chce sporiΕ₯ na účte alebo investovaΕ₯ do podielovΓ½ch fondov. 
Či chce sporiΕ₯ na účte alebo investovaΕ₯ do podilovΓ½ch fondov, si klient mΓ΄ΕΎe sΓ‘m zvoliΕ₯. 

Prosím, pozorne si prečítajte podmienky. 
Obchodné podmienky si prosím prečítajte pozorne. 
 
Pravdepodobne ste sa stali terčom podvodnΓ­ka. MusΓ­me okamΕΎite zablokovaΕ₯ vaΕ‘u kreditnΓΊ kartu. 
Pravdepodobne ste sa stali terčom podvodnΓ­ka. MusΓ­me vaΕ‘u kreditnΓΊ kartu zablokovaΕ₯ okamΕΎite. 
English comparission with SK, CZ language on examples

I saw a lion at the zoo yesterday.          # Important = it was a lion
Yesterday, I saw a lion at the zoo.         # Important = it was yesterday


I can only play the piano.   # Of all instruments, I play only piano (not guitar, not flute)
I only can play the piano.   # Playing piano is my only skill (not dancing, not singing)
CZ:
Novou kartu vΓ‘m mΕ―ΕΎeme poslat poΕ‘tou, pΕ™Γ­padnΔ› kurΓ½rem. TakΓ© si ji mΕ―ΕΎete vyzvednout na pobočce. Kterou variantu preferujete?”`
SK:
β€œNovΓΊ kartu vΓ‘m mΓ΄ΕΎeme poslaΕ₯ poΕ‘tou alebo kuriΓ©rom. MΓ΄ΕΎete si ju tieΕΎ vyzdvihnΓΊΕ₯ na pobočke. KtorΓΊ moΕΎnosΕ₯ uprednostňujete?”
EN:
"We can send you a new card by post or courier. You can also pick it up at a branch. Which option of these two options do you prefer?"

You can also use sentences that require a multiple-choice answer, such as "Which of the options do you wish to choose: A or B?". Alternatively, we recommend accompanying both options with a verb so that each option is its own sentence and it is clear that these are choices, for example, "Do you want A or do you need B? Another strategy is to first inform the customer of the options and then ask them to choose.

CZ:
Vyberte si, zda se chcete pΕ™ihlΓ‘sit pomocΓ­ e-mailu, nebo pomocΓ­ Facebooku.
ŘeknΔ›te mi, zda chcete zaslat fakturu na e-mail, nebo zda ji mΓ‘me poslat poΕ‘tou.
PotΕ™ebuji nejdΕ™Γ­v vΔ›dΔ›t, zda jiΕΎ u nΓ‘s mΓ‘te účet, nebo ho teprve chcete zaloΕΎit. 

SK:
Vyberte si, či sa chcete prihlΓ‘siΕ₯ cez e-mail alebo pomocou Facebooku”
β€œPovedzte mi, či chcete faktΓΊru poslaΕ₯ e-mailom alebo či ju mΓ‘me poslaΕ₯ poΕ‘tou”,
β€œNajprv potrebujem vedieΕ₯, či uΕΎ u nΓ‘s mΓ‘te účet, alebo si ho prΓ‘ve chcete otvoriΕ₯.”. 

EN:
"Choose whether you want to sign in via email or Facebook"
"Tell me if you want us to send you an invoice via email or whether you prefer to receive it as a paper letter"
"First, I need to know if you already have an account with us or if you just want to open one".

However, the number of unwanted answers can be reduced by appropriate copywriting with more distinctive intonation (see intonation) and emphasis on the individual options. One way to write a question that requires multiple choice is to use clear and specific terms that clearly identify each option. For example, instead of asking "Do you want A or B?" you can try something along the lines of:

In spoken language, however, this difference in meaning is unclear in both languages as well as several others (English, German, French etc.), and it happens that customers do not understand the question at the first attempt and answer yes/no instead of choosing from the options. It is therefore necessary to take this into account when designing the conversation and prepare the scenario for such situations.

In Slovak, a similar rule does not apply for or, the writing of commas is governed by different rules.

Example 1.
Yes/no question. We're asking if they're interested in a drink at all. The expected answer is yes/no.

Do you want (A or B)? 
DÑő si kÑvu nebo čaj?
Do you want (coffee or tea)?
Example 2.
We'll serve you either coffee or tea. Choose one of the two. We expect a response of "coffee, please" or "tea with honey, thanks".

Do you want A, or B? 
DÑő si kÑvu, nebo čaj?
Do you want (coffee) or do you want (tea)?

In Czech, we distinguish grammatically by a comma between two mutually exclusive choices. In this case, the comma is meaning-forming.


Multiple choice question

CZ: 
VolΓ‘te kvΕ―li svΓ© objednΓ‘vce, pΕ™Γ­padnΔ› dΕ™Γ­ve zakoupenΓ©ho vΓ½robku? Stačí mi jednoduchΓ‘ odpověď ano nebo ne.
ZboΕΎΓ­ mΕ―ΕΎete vrΓ‘tit na prodejnΔ›, kurΓ½rem nebo pΕ™es zΓ‘silkovnu. Kterou z tΔ›chto moΕΎnostΓ­ zvolΓ­te?

EN:
Are you calling to unblock your account? Please answer with yes or no.

TIP! In the beginning, before customers get used to the new technology, it is a good idea to provide short instructions on how to interact with the voicebot to avoid confusion and the tendency to press buttons like with IVR.

Wrong practice examples:
  • We don't want to make the user talk over the digital assistant! On the contrary, we want the user's answer to be as concise and clear as possible, and thus easily and reliably recognizable by the voicebot. It is therefore a good idea to make sure that each chatbot text contains only one clear and understandable question.

  • Having two questions in one text also makes it difficult to adjust the synthesis, as the question mark is naturally followed by a longer pause before the start of the next sentence, which is not correctable by the SSML breaktime tag. From the user's perspective, it looks as if the voicebot has already finished, the user starts to answer and jumps in to talk over the robot.

  • It is important to make sure that one voicebot's message does not contain two questions at the same time, as this can cause confusion and complicate understanding between the bot and the user. When multiple questions are included in the output message, it can confuse the user. They may not know which question to focus on or what the correct answer is. This can cause the user to feel frustrated which can reduce communication effectiveness and make the user experience less enjoyable.


Multiple questions in a single message

  • If you ask the question at the end of the speech, the customer has already heard all the relevant information and is ready to respond.

  • In general, people are more likely to retain the freshest information in their memory, i.e. the information they heard last (see theme).

  • This will increase the likelihood that the customer will respond concisely and appropriately, and the voicebot will recognize everything correctly and provide the most complete answer to the customer's query.

  • The question asked will indicate to the customer that it is time for him to start talking.

Supporting argument for positioning question at the end of the speech:

CZ:
ChtΔ›l bych vΓ‘m nabΓ­dnout konzultaci s naΕ‘Γ­m expertem. Ozve se VΓ‘m a zdarma VΓ‘m provede kalkulaci toho nejvΓ½hodnΔ›jΕ‘Γ­ho pojiΕ‘tΔ›nΓ­. MΓ‘te zΓ‘jem? 

RΓ‘di bychom VΓ‘m poskytli konzultaci zdarma. Ozve se VΓ‘m nΓ‘Ε‘ expert s kalkulacΓ­, kterΓ© pojiΕ‘tΔ›nΓ­ by pro VΓ‘s bylo nejvhodnΔ›jΕ‘Γ­. SouhlasΓ­te?

Rather, the solution is built on alternating between periods when the voicebot is speaking and not listening (running text-to-speech synthesis) and when the voicebot is silent, listening and evaluating the transcript of the response (running speech-to-text transcription). If the customer speaks without the voicebot finishing speaking, speech-to-speech transcription does not run and part of the response is lost, which can lead to misrecognition of intent.

It's better if the text of the voicebot contains the question at the end of the speech. This will help to prevent the customer from jumping into the voicebot's speech. The solution is not designed to allow the customer to interrupt the virtual assistant, while the voicebot is able to go back and finish the rest of its speech.

Remember that achieving natural and expressive intonation in TTS systems can be challenging, as it requires capturing the nuances of human speech. It may take some experimentation and refinement to achieve the desired results.


Position of the question in digital assistant's message

CZ:
ZkusΓ­me to znovu? 
Vyplnil jste vΕ‘echny ΓΊdaje sprΓ‘vnΔ›?
PΕ™ejete si reklamaci Ε™eΕ‘it radΔ›ji pΓ­semnou cestou?

A question should never be phrased negatively. This is because people are generally more willing to accept positive information and ideas than vice versa. Phrasing the question negatively can reduce the likelihood that the voicebot will correctly understand the customer's answer.

CZ:
Nechcete to zkusit znovu?      
NeudΔ›lali jste chybu? 
Jste si jistΓ½, ΕΎe jste neudΔ›lal chybu?
NepΕ™ejete si reklamaci radΔ›ji Ε™eΕ‘it pΓ­semnou cestou? 

SK:
Nechcete to skΓΊsiΕ₯ znova?   
Neurobili ste chybu?  
Nechceli by ste svoju sΕ₯aΕΎnosΕ₯ rieΕ‘iΕ₯ radΕ‘ej pΓ­somne?

EN:
Won't you try again?
Don't you want to deal with reclamation via e-mail?

What would answer yes (ano/Γ‘no) mean in this case? Yes, I want or Yes, I indeed don't want to? This situational context cannot be discerned with 100% confidence, so we recommend phrasing questions positively or neutrally.

Question wording is a key element of the voicebot scenario. The wording of the question influences the phrasing of customer's answer, and therefore the intent that must be trained for the virtual assistant to recognize the answer.

Question formulation

Based on the length of the sentence sometimes the quality of the synthesis can be quite fluctuating, appearing artificial and not very natural. In such cases, it is useful to shorten the copywriting or add or edit some words to the text to make the voice synthesis sound better. This approach can help create a more natural and beautiful voice synthesis without the need for complicated settings or SSML tags.

10 Copywriting tips for your digital assistant with speech synthesis
  1. The copywriting must be snappy, clear, and understandable.

  2. Speak the language of your customers. Use terms and slang they understand.

  3. Never phrase questions negatively.

  4. 1 message node = 1 question maximum.

  5. The ideal placement of the question is at the end of the message.

  6. Never ask two different things with one question.

  7. For multiple-choice questions, make sure to clearly differentiate the options. If appropriate, rephrase to an announcement sentence and inform the customer that they have to choose and list options.

  8. Spelling and grammatical correctness in Speech is secondary. However, make errors consciously so that they benefit the quality of the synthesis.

  9. Avoid foreign language expressions whenever possible. Alternatively, we write them in such a way that they can be read alphabetically

  10. Special characters and cases that are to be read aloud are broken down with words.


Intonation best practice

Master the art of customizing speech synthesis intonation with SSML on our dedicated documentation page. Learn to personalize your AI voice with precision and creativity for a truly tailored and engaging auditory experience!

Here are some basic tips
  1. Understand the context: Intonation conveys meaning and emotion in speech. It's important to consider the context and intended message of the text. Identify the keywords, phrases, or sentences that require specific intonation patterns to convey the desired emphasis or emotion.

  2. Use punctuation: Punctuation marks such as commas, periods, question marks, and exclamation marks indicate natural breaks and changes in intonation. Make sure to add appropriate punctuation to your text to guide the TTS system's intonation.

  3. Prosody tags: Utilize SSML tags to explicitly specify the desired intonation patterns for specific words or phrases.

  4. Experiment with pitch and duration: Intonation involves variations in pitch and duration. Adjusting the pitch can create rising or falling intonation patterns while manipulating the duration of syllables or phrases can add emphasis or rhythmic patterns. Experiment with these parameters to achieve the desired intonation.

  5. Listen and iterate: After applying intonation modifications, listen to the generated speech and evaluate the effectiveness of the intonation patterns. Make adjustments as needed to achieve the desired expressive quality and convey the intended meaning.

  6. Consult native speakers: If possible, seek feedback from native speakers of the target language to ensure that the intonation sounds natural and appropriate. Native speakers can provide valuable insights and guidance on the intonation patterns specific to the language and context.

Remember that achieving natural and expressive intonation in TTS systems can be challenging, as it requires capturing the nuances of human speech. It may take some experimentation and refinement to achieve the desired results.


Intonation curve

Text-to-speech synthesis is also able to automatically detect the sentence type and set the corresponding intonation curve. This means that you can easily create a synthesized voice that sounds natural and matches the text you enter accurately.

In Azure Audio Content Creator, you can adjust intonation in sections, which means you can set intonation for each sub-section, phrase, or word separately, instead of having to set intonation for the whole sentence. This allows you to capture different intonation nuances more accurately and gives you more control over how the neural voice will appear.

Accentuating intonation allows listeners to distinguish between the different ideas and information contained in a sentence. By adjusting intonation curves, you can highlight important points or emphasize changes in mood or emotion, which will help the listener better understand and remember what the voice is saying.

Intonation best practice tips

Here's how you can work with the Intonation curve effectively:

  • Understand the Intonation curve: The Intonation curve represents the pitch contour of the speech waveform. It visualizes the changes in pitch over time. The x-axis represents time, and the y-axis represents pitch.

  • Identify key points: Identify the key points in the text where you want to manipulate the intonation. These points could include emphasized words, important phrases, or sections that require specific intonation patterns.

  • Add anchor points: Add anchor points on the Intonation curve to indicate the pitch changes. Click on the curve at specific time points to create anchor points. These points will serve as the reference for manipulating the pitch.

  • Adjust pitch and duration: Drag the anchor points up or down to adjust the pitch at those time points. Moving them upward raises the pitch while moving them downward lowers the pitch. You can also drag the edges of the anchor points to modify the duration of the pitch change.

  • Create prosody patterns: By adding multiple anchor points and adjusting their positions, you can create inflection patterns such as rising, falling, or fluctuating intonation. For example, a rising intonation pattern can indicate a question, while a falling intonation pattern can denote a statement or completion.

  • Preview and refine: Preview the speech with the modified Intonation curve to evaluate the impact of your changes. Fine-tune the positions of anchor points as needed to achieve the desired intonation patterns.

  • Iterate and experiment: Intonation patterns can be subjective and depend on the context and language. Experiment with different anchor point positions, shapes, and durations to find the most appropriate intonation for your specific text.

When adjusting intonation curves, you should consider several factors such as sentence length, rhythm, accent, and the emphasis you want to convey. It is important to remember that intonation is a complex subject and that you need to practice and try different approaches.


Melody patterns

Here are some examples of inflexion patterns you can achieve:

To create a rising intonation pattern, you would place anchor points at the beginning of a phrase or sentence and gradually raise the pitch as you move forward in time. This pattern is commonly associated with questions or uncertainty.

Want more detailed tips ⁉️

πŸ‡¨πŸ‡Ώ CZ intonation patterns step-by-step

Basic patterns in Czech language

Rising intonation for questions: In Czech, rising intonation is commonly used to indicate questions. When using the Intonation curve, create a rising pattern by gradually increasing the pitch from the beginning to the end of the question phrase or sentence. To emphasize the end of the question, you can drop the curve a little bit lower before you bring it up to its amplitude.

Falling intonation for statements: Statements in Czech typically have falling intonation. To convey this, place anchor points at the beginning of the statement and gradually lower the pitch as you move forward in time. This falling pattern gives a sense of finality and completion to the sentence.

Distinctive pitch accents: In Czech, pitch accents do not typically change the meaning of a word. Unlike some tonal languages where pitch variations can differentiate lexical meanings, Czech does not have a lexical tone. Instead, Czech is characterized by patterns of stress and intonation.

Emphasizing keywords: In Czech, emphasis is often placed on specific words to highlight their importance or to contrast them with other elements in the sentence. Use the Intonation curve to create a noticeable pitch increase on the emphasized word or phrase. This helps convey the intended emphasis and focus within the sentence.

Pay attention to sentence structure: The word order and sentence structure in Czech can influence intonation patterns. For example, the initial position of a subject in a sentence may receive more prominent intonation. Be mindful of these structural cues and adjust the intonation accordingly.

Question intonation

If we want to improve intonation to make it clear that this is a question, the first instinct should be to set a curve rising with the end of the sentence.

image.png

There are also some specific words that indicate a question, such as interrogative pronouns (what, who, where, etc.). If we raise the intonation on the curve at this point, we will emphasize these words. This can be useful if we want to elicit specific information from users. This will be more effective for multi-word questions. For very short questions, or questions made up of very short words, there are not enough vowels available to allow the melody of the more complex intonation curves to "sing" the melody correctly.

Proč mÑő tak veliké zuby? - Emphasize we're looking for reason.

Kolik vlasΕ― mΓ‘ pohΓ‘dkovΓ½ dΔ›deček VΕ‘evΔ›d? - Emphasize we're looking for count.

Jak se podle vΓ‘s sprΓ‘vnΔ› budΓ­ princezny? - Emphasize we're looking mean of.

This will be more effective for longer questions. For very short questions or questions made up of very short words, there are not enough vowels available to allow the more complex intonation curves to get the melody right.

JakΓ‘ je adresa tvΓ©ho trvalΓ©ho bydliΕ‘tΔ›? βœ“βœ“βœ“ ŘekneΕ‘ mi, kde bydlΓ­Ε‘? βœ“βœ“ Kde domov mΕ―j? βœ“ Jak se mΓ‘Ε‘? βœ“ Jak je? βœ—

Using SSML, you can also transform the original statement into a question. The melody of the sentence will probably appear "flatter" compared to a classically written question with a question mark at the end, which is rising by default.

How to correct excessive pitch for Czech neural voices

Sometimes the neural voice may seem to intone the ends of questions correctly but unnaturally. Typically, the end of a sentence suddenly shoots off significantly in intonation, the voice seems " textbook-ish", as if it mutates, sounds affected or strangled.

abc.gif

If the pitch of synthetic speech seems to rise too much at the end of questions, there are a few things you can try.

UΕΎ mΓ‘te sjednanΓ© novΓ© pojiΕ‘tΔ›nΓ­? β†’ ProsΓ­m Ε™eknΔ›te mi, zda jiΕΎ mΓ‘te sjednanΓ© novΓ© pojiΕ‘tΔ›nΓ­.

image.png

image.png


Pauses and breaks best practice

Basics

The <break> tag is used to create a pause of a given length in the text. This tag can be used, for example, to express a pause between words or sentences, which can help to improve the naturalness of the delivery.

Azure Audio content creator tool offers both predefined tags and the ability to incorporate breaks of a length of our choosing.

The <break> tag in SSML is used to insert a pause or a break in the speech output. It allows you to specify the duration and the strength of the pause. The <break> tag can be used with the following attributes:

time: Specifies the duration of the pause in seconds or milliseconds. For example, <break time="500ms"/> inserts a pause of 500 milliseconds.

strength: Specifies the strength or intensity of the pause. It can have values like "none", "x-weak", "weak", "medium", "strong", or "x-strong". The actual interpretation of these values may depend on the specific text-to-speech engine used.

Example

  • Hello, <break time="500ms"/> how are you today?

  • Hello, <break strenght="medium"/> how are you today?


Pronunciation best practice

Phoneme-defined pronunciation

Stress can have a huge impact on pronunciation.

When a word is stressed, the stressed syllable is typically pronounced with greater intensity, higher pitch, and longer duration compared to unstressed syllables. Additionally, the quality of vowels in stressed syllables may also be affected, with stressed vowels often being pronounced with more clarity and fullness.

In πŸ‡¨πŸ‡ΏCzech, stress is generally fixed on the first syllable of a word. This means that the first syllable receives the primary stress, while the subsequent syllables have secondary stress or are unstressed. However, it's important to note that stress patterns can vary depending on the word and its inflectional or derivational forms.

To provide some examples in IPA (International Phonetic Alphabet), let's consider a few Czech words:

"kniha" (book): /ˈkΙ²ΙͺΙ¦a/ The primary stress falls on the first syllable (/kΙ²/), making it more prominent in pronunciation.

"univerzita" (university): /ˌunΙͺvΙ›rˈzΙͺta/ The primary stress is on the second syllable (/Ιͺv/), while the first syllable (/u/) carries secondary stress. The following syllables (/Ι›rˈzΙͺt/ and /ta/) are unstressed.

"pΕ™ekvapenΓ­" (surprise): /ˌprΜΜŠΙ›kvaˈpΙ›Ι²i/ The primary stress is on the second syllable (/Ι›kva/), and the first syllable (/pr̝̊/) carries secondary stress. The final syllable (/Ι²i/) is unstressed.

These examples illustrate the general stress patterns in Czech, where the stressed syllables are emphasized in terms of intensity, pitch, duration, and sometimes vowel quality. It's important to consult native speakers or audio resources to further refine your pronunciation and understand the intricacies of Czech stress patterns.

Foreign words pronunciation

When using Azure's Speech Studio with neural voices to handle foreign word pronunciation, here are some tips to ensure accurate pronunciation:

  • Phonetic spelling: Provide a phonetic spelling of the foreign words using the International Phonetic Alphabet (IPA) or a transcription system familiar to the base language neural voices. This helps the TTS system understand the correct pronunciation of the word.

  • Lexicon customization: Utilize the lexicon customization feature in Azure's Speech Studio to add pronunciation rules for specific foreign words. This allows you to specify the pronunciation of each word or phrase more precisely.

  • Pronunciation rules: Create pronunciation rules for common patterns found in foreign words. For example, if there is a consistent pattern of stress in the foreign language, you can define rules to apply stress in the appropriate position.

  • Contextual cues: Provide additional context within the text to help guide the TTS system's pronunciation. This could include nearby words or phrases that assist in determining the correct pronunciation of the foreign word.

  • Test and iterate: After applying the above techniques, listen to the generated speech and identify any mispronunciations. Adjust the phonetic spellings, lexicon entries, or pronunciation rules as necessary and continue testing until the desired pronunciation is achieved.

It's important to note that while these tips can improve the accuracy of foreign word pronunciation in TTS systems, the results may still vary. TTS systems are trained on large datasets and generalize pronunciation based on the language's phonetic patterns. Handling foreign words can be challenging due to the diverse pronunciation rules across languages.

πŸ‡¨πŸ‡Ώ Examples:


Some phrases or individual words from foreign vocabulary are trained in the default text-to-speech model and synthesized is smooth, localized to base language, and pleasant to the ear. Sounds fine without adjustments:

  • NejpouΕΎΓ­vanΔ›jΕ‘Γ­ vyhledΓ‘vač v Česku je Seznam, nikoliv Google.

  • LetΓ­me na dovolenou se společnostΓ­ Lufthansa.

  • KoupΓ­m ojetΓ½ renault.

Other phrases or words can be very similar and comprehensible, with a few tweaks here and there. Even though their pronunciation is nearly correct, this can cause an uncanny valley effect:

  • Ceny maji jako Deutsche bahn, ale sluΕΎby jako nejposlednΔ›jΕ‘Γ­ droΕΎka.

deutsche is pronounced correctly like [dΙ”Ν‘Ιͺˈt.ΚƒΙ›.], but bahn sounds like [ba.Ι¦aːˈ.eΜƒΛˆ] and would be needed to be adjusted

  • PotΕ™ebuji znΓ‘t vaΕ‘i IP adresu.

IP being pronounced like [iːˈ.pɛː], which would be comprehensible, but in the case would be better to adjust English pronunciation to Czech as [aΝ‘j.piː] πŸ‡¨πŸ‡ΏPronunciation of numbers followed by currency signs is quite different from common reading rules.With prices, sums of money, or values, we often omit words describing the decimal order of fractional part ([desetiny, setiny])

Integers

πŸ‡¨πŸ‡Ώ Czech language

  • If digits have fewer than or exactly 6 digits, they are always read decadically as default, regardless of whether a space separates orders of thousands 1234 1 234 Both numbers are pronounced as: TISÍC DVĚ STĚ TŘICET ČTYŘI 12345 12 345 Both numbers are pronounced as: DVANÁCT TISÍC TŘI STA ČTYŘICET PĚT 123456 123 456 Both numbers are pronounced as: STO DVACET TŘI TISÍC ČTYŘI STA PADESÁT Ε EST

  • If digits have 7 or more characters, they are read decadically only if the order of thousands is separated by a space. Numeric string notation without spaces defaults to reading each digit in turn. 1234567 is pronounced JEDEN DVA TŘI ČTYŘI PĚT Ε EST SEDM 1 234 567 is pronounced MILION DVĚ STĚ TŘICET ČTYŘI TISÍC PĚT SET Ε EDESÁT SEDM 123456789 is pronounced JEDEN DVA TŘI ČTYŘI PĚT Ε EST SEDM OSM DEVĚT 123 456 789 is pronounced STO DVACET TŘI MILIONÚ ČTYŘI STA PADESÁT Ε EST TISÍC SEDM SET OSMDESÁT DEVĚT

  • If we need shorter numbers to be read each digit in turn, there are several ways to do it A. Add spaces in between 1 2 3 4 5 6 is pronounced JEDEN DVA TŘI ČTYŘI PĚT Ε EST B. Add commas in between 1, 2, 3, 4, 5, 6 is pronounced JEDEN DVA TŘI ČTYŘI PĚT Ε EST with more distinct pauses between each of them C. Use SSML alias for spelling (hlΓ‘skovΓ‘nΓ­) <say-as interpret-as="spell" format="undefined">123456</say-as> is pronounced JEDEN DVA TŘI ČTYŘI PĚT Ε EST

  • If we need longer number to be read each digit in turn, copywriting input needs to be adapted accordingly A. Use numeric string without spaces 1234567890 B. Separate each digit with spaces 1 2 3 4 5 6 7 8 9 C. Separate each digit with interpunction 1,2,3,4,5,6,7,8,9 These numbers will be pronounced as JEDEN DVA TŘI ČTYŘI PĚT Ε EST SEDM OSM DEVĚT

Phone numbers

πŸ‡¨πŸ‡Ώ Czech language

For the pronunciation of telephone numbers:

A. Write them down in iso format including prefix Volejte +420 800 148 148 is pronounced VOLEJTE PLUS ČTYŘI STA DVACET, OSM SET, STO ČTYŘICET OSM, STO ČTYŘICET OSM

B. Separate custom sections with interpunction Volejte 800, 148, 148 is pronounced OSM SET, STO ČTYŘICET OSM, STO ČTYŘICET OSM Volejte 212-456-789 is pronounced DVĚ STĚ DVANÁCT, ČTYŘI STA PADESÁT ŠEST, SEDM SET OSMDESÁT DEVĚT Volejte 800, 54, 12, 12 is pronounced OSM SET, PADESÁT ČTYŘI, DVANÁCT, DVANÁCT Volejte 800, 12, 7, 7, 7. 7 is pronounced OSM SET, DVANÁCT, SEDM, SEDM, SEDM, SEDM

C. Write them down as alphabetical string Volejte osm set dvanΓ‘ct čtyΕ™i sedmničky Volejte osm set dvanΓ‘ct sedm sedm sedm sedm

D. Separate sections with spaces, as long it's meant to be pronounced in 3-2-2-2 or 3-2-1-1-1-1 800 54 12 12 is pronounced OSM SET, PADESÁT ČTYŘI, DVANÁCT, DVANÁCT 800 54 1 2 1 2 is pronounced OSM SET, PADESÁT ČTYŘI, JEDNA, DVA, JEDNA, DVA

Long numerical strings (IDs, codes)

πŸ‡¨πŸ‡Ώ Czech language

For pronunciation of long numerical strings (order IDs etc.):

A. Write numerical strings without spaces to be read one digit in turn ObjednÑvka 01304578931 ObjednÑvka NULA JEDNA TŘI NULA ČTYŘI PĚT SEDM OSM DEVĚT TŘI JEDNA

B. Customize pronunciation by breaking it into smaller chunks with interpunction ObjednÑvka 01, 30, 45, 78, 9-3-1 ObjednÑvka NULA JEDNA, TŘICET, ČTYŘICET PĚT, SEDMDESÁT OSM, DEVĚT TŘI JEDNA

Numeric date notation

πŸ‡¨πŸ‡Ώ Czech language Dates are pronounced correctly by default when put down in ISO format:

A. ISO DD-MM-YYY 01-11-1995 1-11-1995 Pronounced as [1. listopadu 1995]

B. ISO YYYY-MM-DD 1995-11-01 1995-11-1 Pronounced as [1. listopadu 1995]

C. ISO DD.MM.YYYY datum 01.11.1995 datum 01. 11. 1995 datum 1.11.1995 datum 1. 11. 1995 Pronounced [as 1. listopadu 1995]

A safe and simple way is to transcribe the date alphanumerically:

datum 1. listopadu 1995 prvnΓ­ho listopadu 1995 Pronounced as [1. listopadu 1995]

prvnΓ­ho jedenΓ‘ctΓ½ 1995 Pronounced as [prvnΓ­ho jedenΓ‘ctΓ½ 1995]

These formats WON'T WORK and will be pronounced incorrectly, even if tagged with SSML alias reading rules for dates

  • DD.MM - 1.11. - [jedna hodina jedenΓ‘ct minut]

  • DD. MM - 1. 11. - [prvnΓ­ jedenΓ‘ctΓ½]

  • DD/MM - 01/11 - [nula jedna lomΓ­tko jedenΓ‘ct]

  • DD/MM/YYYY - 01/11/1995, 1/11/1995 - [nula jedna lomΓ­tko jedenΓ‘ct lomΓ­tko 1995]

  • SSML alias reading rules not supported

To be pronounced correctly, dates containing only date + month must be written manually

prvnΓ­ho listopadu dne 2. listopadu 31. bΕ™ezna 17. listopad

Time notation

πŸ‡¨πŸ‡Ώ Czech language

Standard iso format is supported and is pronounced as time correctly by default

  • HH:mm - 15:52 - [PatnΓ‘ct hodin padesΓ‘t dvΔ› minuty]

  • HH:mm:ss - 15:52:25 - [PatnΓ‘ct hodin padesΓ‘t dva minut dvacet pΔ›t sekund]

  • HH.mm - 15.52 - [PatnΓ‘ct hodin padesΓ‘t dva minut]

Whole hours, even if written down digital, are pronounced as analog time

  • HH:00 - 15:00 - [PatnΓ‘ct hodin]

  • HH:00:00 - 15:00:00 - [PatnΓ‘ct hodin]

The Czech SI unit system IS NOT SUPPORTED

Won't pronounce hod or h as hodin/hodiny 15 hod - [patnΓ‘ct hod] 15 h - [patnΓ‘ct hΓ‘] Won't pronounce min or mins as minut/minuty 15 min - [patnΓ‘ct min] 15 hod 15 min - [patnΓ‘ct hod patnΓ‘ct min]

In case you need time to be pronounced as analog or Czech SI units to be pronounced correctly, it is necessary to transcribe your input

  • 15 hod β†’ 15 hodin

  • 15 min β†’ 15 minut

  • 2 min β†’ 2 minuty

  • 15:15 β†’ čtvrt na čtyΕ™i | čtvrt na čtyΕ™i

  • 12:00 β†’ poledne

  • 12:30 β†’ pΕ―l jednΓ© odpoledne


Customizing speech synthesis of variables

A variable is a named storage location that holds a value in computer programming. It is a fundamental concept used to store and manipulate data within a program. In the context of voicebots and speech applications, variables can be used to store and retrieve information that is relevant to the conversation or user interaction.

General use

To use variables in the speech output of a voicebot, you need to incorporate the variable values within the text that the voicebot will read out loud (in the Message node, fill in the Speech window).

General approach:

  1. Define and store the variable values: In your voicebot's code or script, define and store the necessary variable values based on user input or other relevant data. For example, you might have a variable named customer_name that stores the user's name.

  2. Construct the speech output text: Craft the message, and include the variable values where appropriate.

  3. Set Speech in Message node: Paste the constructed speech input for the text-to-speech engine to convert it into audible speech. Your digital assistant will then speak the generated text, incorporating the variable values dynamically.

Common problems and FAQ

🀯 Why does the neural voice in Azure Audio Content Creator tool spell out every variable as left curly bracket [...] right curly bracket?

In Azure Speech Studio's Audio Content Creator, modifying the intonation on the pronunciation of variables in text-to-speech (TTS) output can be challenging due to the following:

  • The audio content creator tool is not connected to your database, so variables are not filled with values, therefore your variable names are considered as common words. Reading out the literal characters occurs when text-to-speech encounters special characters, such as curly brackets, which are often used in programming languages.

  • Dynamic nature of variables: Variables can hold a wide range of values, including names, numbers, or user-generated input. Each variable may require unique intonation patterns or pronunciation rules, making it challenging to create a one-size-fits-all approach within the TTS system.

  • Lack of context awareness: Text-to-speech engines typically treat variables as plain text and lack the contextual understanding of the variable's meaning. As a result, it becomes difficult to apply nuanced intonation or pronunciation adjustments specifically to variable content.

  • Limited SSML support for variable manipulation: While SSML (Speech Synthesis Markup Language) provides a range of tags and attributes to control TTS output, it may have limited support for manipulating variables. SSML tags are primarily designed to modify the speech synthesis process and don't always provide direct control over variable pronunciation or intonation.

  • Pre-trained voice limitations: In some cases, if the TTS output is based on pre-recorded voice samples, modifying the intonation or pronunciation of variables may not be feasible as the pre-recorded voice may not have the necessary flexibility to handle variable-specific modifications.

Addressing these challenges often requires a deeper level of customization and integration within the TTS system. It may involve leveraging advanced techniques like custom voice models, data-driven synthesis, or employing specific programming logic to manipulate variable-specific intonation patterns.

Why do I cannot use <alias> SSML tags on part of a speech with a variable in it?

Since variable values are dynamic, there's no point in replacing them with a single alias. Synthesized message would always be the same regardless of the variable's value.

Why is it challenging to customize the synthesis intonation of text with variables?

Variable values might significantly vary in length and therefore the rhythm of speech, the number of syllables, vowel content and a prosody of a sentence is a slightly different with every case.


SPEECH input: Jste prosΓ­m {gender] {name_surname}?

Possible text-to-speech outputs:
Jste prosΓ­m pan Jan KΓ‘r?
Jste prosím pan Ivo Krč?
Jste prosΓ­m pan Pavel NovΓ‘k?
Jste prosím paní Eva ČernÑ?
Jste prosΓ­m panΓ­ EliΕ‘ka DrahokoupilovΓ‘?
Jsem prosím Filémína StrčskrzprstovÑ?
Jste prosΓ­m pan KvΔ›toslav PodhorodeckΓ½?
[...]

Only way to handle this situation is to temporarily substitute variables with some dummy values as examples.

πŸ’‘ Try various intonation curves until finding one configuration that is acceptable on all dummy cases.

Last updated

Was this helpful?