Может ли API речи Google преобразовывать текст в речь?

Я использовал API речи Google, чтобы успешно преобразовать речь в текст, используя следующий код.

import speech_recognition as sr
import os

#obtain audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
    print("Say something!")
    audio = r.listen(source)

# recognize speech using Google Cloud Speech
GOOGLE_CLOUD_SPEECH_CREDENTIALS = r"""{KEY}
"""
# INSERT THE CONTENTS OF THE GOOGLE CLOUD SPEECH JSON CREDENTIALS FILE HERE
try:
    speechOutput = (r.recognize_google_cloud(audio, credentials_json=GOOGLE_CLOUD_SPEECH_CREDENTIALS, language="si-LK"))
except sr.UnknownValueError:
    speechOutput = ("Google Cloud Speech could not understand audio")
except sr.RequestError as e:
    speechOutput = ("Could not request results from Google Cloud Speech service; {0}".format(e))
print(speechOutput)

Я хочу знать, могу ли я преобразовать текст в речь, используя тот же API? Если нет, какой API использовать и пример кода Python для этого. Благодарю вас!


person cmb28    schedule 06.05.2018    source источник


Ответы (1)


Для этого вам потребуется новый API преобразования текста в речь, который находится в бета-версии на данный момент. Вы можете найти краткое руководство по Python в разделе документации «Клиентская библиотека». Образец является частью python- репозиторий примеров документов. Добавление соответствующей части примера здесь для лучшей наглядности:

def synthesize_text(text):
    """Synthesizes speech from the input string of text."""
    from google.cloud import texttospeech
    client = texttospeech.TextToSpeechClient()

    input_text = texttospeech.types.SynthesisInput(text=text)

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices().
    voice = texttospeech.types.VoiceSelectionParams(
        language_code='en-US',
        ssml_gender=texttospeech.enums.SsmlVoiceGender.FEMALE)

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

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

    # The response's audio_content is binary.
    with open('output.mp3', 'wb') as out:
        out.write(response.audio_content)
        print('Audio content written to file "output.mp3"')

Обновление: конфигурация скорости и шага

Вы можете заключить текстовые элементы в тег <prosody>, чтобы изменить rate и pitch. Например:

<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>

Возможные значения для них соответствуют спецификациям W3, которые можно найти здесь. В документах SSML для API преобразования текста в речь подробно это описано, и они также предоставить некоторые образцы.

Кроме того, вы можете управлять общей скоростью воспроизведения звука с помощью параметра speed в <audio>, который в настоящее время принимает значения от 50 до 200% (с шагом 1%).

person Guillem Xercavins    schedule 06.05.2018
comment
Привет @Guillem, не могли бы вы сказать мне возможные значения скорости и шага в этом API? пожалуйста! - person Abdul Rehman; 21.06.2018