Может ли Google Speech API конвертировать текст в речь? - PullRequest
0 голосов
/ 06 мая 2018

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

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 для этого. Спасибо!

1 Ответ

0 голосов
/ 06 мая 2018

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

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%).

...