Как вы играете звук прямо в Python? - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь найти лучший способ воспроизведения звука на python без загрузки каких-либо звуковых файлов (например, используя временные файлы с tempfile). Это для функции speak с использованием gTTS;Я уже придумал решение сохранить голосовой файл в объекте NamedTemporaryFile. Проблема в том, что я пытался играть в нее.

from gtts import gTTS
from tempfile import TemporaryFile
def speak(text, lang = 'en'):
    gTTS(text = text, lang = lang).write_to_fp(voice := TemporaryFile())
    #Play voice
    voice.close()

Мне просто нужно что-то заменить #Play voice здесь, вот решение, которое я попробовал:

from gtts import gTTS
from tempfile import NamedTemporaryFile
from playsound import playsound
def speak(text, lang = 'en'):
    gTTS(text = text, lang = lang).write_to_fp(voice := NamedTemporaryFile())
    playsound(voice.name)
    voice.close()

Это возвращаетошибка: The specified device is not open or is not recognized by MCI. Примечание. Решение НЕ ДОЛЖНО использовать какой-либо из вышеперечисленных модулей, кроме gTTS. Пока функция speak может использоваться многократно и без сохранения каких-либо файлов, она достаточно хороша.

1 Ответ

1 голос
/ 31 октября 2019

Вы должны использовать pyttsx3 вместо gtts. Нет необходимости сохранять голосовой клип, потому что голос будет воспроизводиться непосредственно во время выполнения. Вы можете найти детали здесь: https://pypi.org/project/pyttsx3/

import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()
...