Специальные символы усекаются при использовании bing tts api из python

Я изменил пример Python, найденный на https://github.com/Microsoft/Cognitive-Speech-TTS/tree/master/Samples-Http/Python для синтеза голоса на испанском языке.

"<speak version='1.0' xml:lang='en-us'><voice xml:lang='en-us' xml:gender='Female' name='Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)'>

to

"<speak version='1.0' xml:lang='es-ES'><voice xml:lang='es-ES' xml:gender='Male' name='Microsoft Server Speech Text to Speech Voice (es-ES, Pablo, Apollo)'>

но в процессе синтеза символы, отличные от ASCII, такие как «-», на каком-то этапе обрезаются, поэтому они не появляются в окончательном аудиофайле.

Я проверил, что это не проблема с питоном, распечатав строку запроса, и символы отображаются правильно.


person Àlex Torregrosa    schedule 22.08.2016    source источник


Ответы (1)


Если вы посмотрите на HTTP-запрос, вы увидите, что библиотека http.client неправильно кодирует строку. Самый простой способ - это закодировать самостоятельно:

ssml = "<speak version='1.0' xml:lang='es-ES'>...</speak>"
body = ssml.encode('utf8')
person cthrash    schedule 23.08.2016
comment
Спасибо! Я пытался закодировать его в latin_1, поскольку http.client использует это, но utf-8, похоже, помогает. - person Àlex Torregrosa; 24.08.2016