Как использовать произношение Phonetic или Phoneme в Google Text to Speech?
Некоторое время я пытался заставить произношение Phonetic или Phoneme работать с текстом Google в речь, но не смог добиться его стабильной работы.
Мне удалось получить ограниченные результаты от использования https://tophonetics.com/ Это переводило: "Корова сошла с ума". на "əə kaʊ wɛnt mæd." но "'" не было слышно. И когда я попробовал "ɪɪs əz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt".
Существуют ли какие-либо SSML-коды для определения фонетических блоков текста, которые можно использовать в этом формате: "D,Is Iz SVM f@n'EtIk t'Ekst 'InpUt" можно использовать вместо "ɪɪs ɪz səm fəˈnɛtɪk tɛkst ˈɪnˌpʊt"
2 ответа
Преобразование текста в речь Google поддерживает тег как минимум с весны 2021 года.
Однако есть много потенциальных ошибок, которые необходимо преодолеть:
- Демонстрационная страница отфильтровывает
<phoneme>
теги на стороне клиента еще до того, как они достигнут API. (То же самое и с<voice>
тег, как указано здесь) - Как и в случае преобразования текста в речь Microsoft Azure (подробности см. В другом ответе ), каждый язык поддерживает только ограниченный набор фонем («букв»), которые можно использовать.
- Если вы используете неподдерживаемый, тег фонемы полностью игнорируется без предупреждения. Итак, официальный пример
<phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
не работает ни с одним английским вариантом, ноen-US
, поскольку всем остальным не хватает"o"
фонема. - Неясно, нужно ли вам использовать
v1beta1
API (который, я могу подтвердить, работает) или если версияv1
тоже нормально.
Есть тег SSML
<phoneme>
это служит вашей цели.
К сожалению, в настоящее время он не поддерживается в Google Cloud Text-to-Speech. Доступное подмножество тегов SSML для Google Cloud указано в документации. В
<phoneme>
тега нет в этом списке. Эксперимент с использованием демонстрации преобразования текста в речь Google Cloud подтверждает, что фонемы игнорируются. Содержимое тега читается как обычный текст, как уже было отмечено @Trevor в комментариях.
В
<phoneme>
однако поддерживается Microsoft Azure Text-to-Speech и Amazon Polly. В обоих случаях доступные фонемы ограничены теми, которые доступны на используемом языке (см. Здесь для Azure и здесь для Polly). Документация Azure не на 100% ясна об исключении фонем, не связанных с языком, но практические эксперименты с демонстрацией преобразования текста в речь Azure подтверждают, что они не работают должным образом. В некоторых случаях они, по крайней мере, кажутся замененными ближайшим доступным эквивалентом на используемом языке.
Ограничение фонем одного языка сильно ограничивает полезность тега фонем. Например, вы не можете использовать эту функцию для встраивания правильно произносимого контента на втором языке, так как на втором языке обычно есть некоторые фонемы, недоступные на первом языке. Конкретные языковые пары, в которых в каждом языке есть фонемы, недоступные в другом, - это английский / немецкий, испанский / немецкий, английский / испанский.