Любые идеи о том, как сохранить звук, создаваемый runAndWait()?

Я использую pyttsx3 для преобразования текста в речь.

import pyttsx3

def tts(text):
    engine = pyttsx3.init()
    engine.say(text)
    engine.runAndWait()

но проблема в том, что я не могу сохранить звук в файл (что очень странно для такой библиотеки).
Я пробовал некоторые другие альтернативы, такие как espeak, который является драйвером для pyttsx, но звук был плохим даже после настройки некоторых параметров.
Если у вас есть какие-либо предложения о том, как я могу сохранить звук или имена других автономных библиотек, предлагающих хорошее качество речи (даже с другими языками программирования), это было бы очень полезно.
Спасибо.


person zguesmi    schedule 27.04.2018    source источник


Ответы (1)


Это может быть поздний ответ, но я надеюсь, что он будет полезен :)

# pip install comtypes
import pyttsx3
engine = pyttsx3.init()
voices = engine.getProperty('voices')

voiceList = []
for voice in voices:
    voiceList.append(voice.name)

print("Voice List: " ,voiceList)
def playItNow(textf, filename, useFile = True, rate = 2, voice = voiceList[0]):
    from comtypes.client import CreateObject
    engine = CreateObject("SAPI.SpVoice")
    engine.rate = rate # can be -10 to  10

    for v in engine.GetVoices():
        if v.GetDescription().find(voice) >= 0:
            engine.Voice = v
            break
    else:
        print("Voice not found")

    if useFile:
        datei = open(textf, 'r',encoding="utf8")
        text = datei.read()
        datei.close()
    else:
        text = textf

    stream = CreateObject("SAPI.SpFileStream")
    from comtypes.gen import SpeechLib

    stream.Open(filename, SpeechLib.SSFMCreateForWrite)
    engine.AudioOutputStream = stream
    engine.speak(text)
    stream.Close()


    import winsound 
    winsound.PlaySound(filename,  winsound.SND_FILENAME)    

playItNow("TextFile.txt", "test_2.wav", useFile= False, rate = -1)
person Trees    schedule 10.12.2019