Google переводит текст в речь и апострофы - PullRequest
1 голос
/ 03 апреля 2019

Я использую Google API для перевода предложения.После перевода я использую текст в речь Google API с результатом перевода.Перевод и преобразование текста в речь работают довольно хорошо в целом.Однако у меня проблема с апострофами.Например:

  • 1) Результат перевода: I & # 3 9;Я устал (Примечание: мне пришлось разделить символы пробелами, потому что в предварительном просмотре это было показано как «Я устал» ...
  • 2) Результат преобразования текста в речь говорит: «Я и хэш тридцать девятья устал "(или что-то похожее)

Какую кодировку мне нужно использовать на 1-м шаге, чтобы получить правильную строку вывода (т.е. я устал) Программа находится на python.Я включаю выдержку здесь:

 def tts_translated_text (self, input_text, input_language):

         from google.cloud import texttospeech

         client = texttospeech.TextToSpeechClient()
         input_text = input_text.encode ("utf-8")
         # Set the text input to be synthesized
         synthesis_input = texttospeech.types.SynthesisInput(text=input_text)
         voice = texttospeech.types.VoiceSelectionParams( language_code=input_language, ssml_gender=texttospeech.enums.SsmlVoiceGender.FEMALE)

         audio_config = texttospeech.types.AudioConfig(
               audio_encoding=texttospeech.enums.AudioEncoding.LINEAR16)

         response = client.synthesize_speech(synthesis_input, voice, audio_config)

         # The response's audio_content is binary.
         with open('output.wav', 'wb') as out:
            # Write the response to the output file.
         out.write(response.audio_content)

Заранее спасибо, Эстер

1 Ответ

0 голосов
/ 04 апреля 2019

Я наконец нашел, что было не так. Google Translate API возвращает строку с кодировкой HTML. А Google Text-To-Speech ожидает кодировку UTF-8. Я вынужден использовать python2.7, поэтому я сделал следующее:

 translated_text = HTMLParser.HTMLParser().unescape (translated_text_html)

Где translation_text_html - возвращенная строка из вызова API перевода

В python3 должно быть:

 translated_text = html.unescape (translated_text_html)
...