8

I have been trying for a while to get Phonetic or Phoneme pronunciation working with google's text to speech but have not managed to get it performing consistently.

I have managed to get limited results from using https://tophonetics.com/ It translated "The cow went mad." to "ðə kaʊ wɛnt mæd." but the 'the' 'ðə' was not audible. And when I tried "ðɪs ɪz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt".

Are there any SSML codes to define phonetic blocks of text, that can be this format "D,Is Iz sVm f@n'EtIk t'Ekst 'InpUt" can be used instead of "ðɪs ɪz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt" "

Hellonearthis
  • 1,664
  • 1
  • 18
  • 26
  • 1
    Does Google support it at all? Amazon does https://docs.aws.amazon.com/en_us/polly/latest/dg/supported-ssml.html#phoneme-tag – Nikolay Shmyrev Apr 16 '19 at 20:30
  • Yes, that's how it should work in google too. – Hellonearthis Apr 17 '19 at 07:34
  • Documentation on Google Cloud for text to speech use of phonemes appears to be limited to a tomato example, however when I test it appears that voice is reading the word "tomato" and is not reading the phoneme for some reason when I alter the word tomato but keep the phoneme tom . Google Cloud's platform doesn't seem to return the voice for the phoneme – Trevor Jun 05 '20 at 16:08

2 Answers2

4

Google Text-to-Speech supports the <phoneme> tag since at least spring 2021.

However, there are a lot of potential gotchas to overcome:

  • The demo page filters out <phoneme> tags on the client side before they even reach the API. (It does the same with the <voice> tag as pointed out here)
  • As with Microsoft Azure Text-to-speech (see the other answer for details), each language only supports a limited set of phonemes ("letters") that can be used.
  • If you use an unsupported one, the phoneme tag is completely ignored without any warning. So the official example <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme> does not work with any English variant but en-US, since all others lack the "o" or "oʊ" phoneme.
  • It's unclear if you need to use the v1beta1 API (which I can confirm is working) or if version v1 is also ok.
Lena Schimmel
  • 7,203
  • 5
  • 43
  • 58
1

There is the SSML tag <phoneme> that serves your purpose.

Unfortunately, it's currently not supported in Google Cloud Text-to-speech. The available subset of SSML tags for Google Cloud is listed in the documentation. The <phoneme> tag is not in this list. An experiment using Google Cloud's text-to-speech-demo confirms that the phonemes are ignored. The content of the tag is being read as ordinary text, as has already been remarked by @Trevor in the comments.

The <phoneme> tag is, however, being supported by Microsoft Azure Text-to-Speech and Amazon Polly. In both cases, the available phonemes are limited to those available in the language being used (see here for Azure and here for Polly). The Azure documentation isn't 100% clear about the exclusion of out-of-language phonemes, but practical experiments with the Azure Text-to-Speech demo confirm that they're not working properly. In some cases, they at least seem to be replaced by the nearest available equivalent in the language used.

Being restricted to the phonemes of one language severely limits the usefulness of the phonemes tag. E.g., you can't used the feature to embed correctly pronounced content in a second language, as the second language will usually have some phonemes that are not available in the first language. Concrete language pairs in which each language has some phonemes that are not available in the other one are English/German, Spanish/German, English/Spanish.

MightyCurious
  • 833
  • 11
  • 20