我试图找到一种方法来合成语音并将其录制到音频文件中。我目前正在使用pyttsx作为我的文本到语音库,但没有一种机制可以将输出保存到文件中,只能直接从扬声器播放。我查看了detecting and recording audio以及PyAudio,但这些似乎是从麦克风输入,而不是将传出音频重定向到文件。有没有一种已知的方法可以做到这一点?
答案 0 :(得分:4)
您可以使用espeak使用-w参数调用subprocess。
import subprocess
def textToWav(text,file_name):
subprocess.call(["espeak", "-w"+file_name+".wav", text])
textToWav('hello world','hello')
这将写入file_name.wav而不会大声朗读。如果您的文本位于文件中(例如text.txt),则需要使用-f参数(“-f”+ text)调用espeak。我建议您阅读espeak man pages以查看您拥有的所有选项。
希望这有帮助。
答案 1 :(得分:2)
您可以使用更高级的SAPI包装器将输出保存到wav文件中。例如,您可以尝试
https://github.com/DeepHorizons/tts
代码应如下所示:
import tts.sapi
voice = tts.sapi.Sapi()
voice.set_voice("Joey")
voice.create_recording('hello.wav', "Hello")
答案 2 :(得分:2)
以下是一个示例,可让您访问NSSpeechSynthesizer API
#!/usr/bin/env python
from AppKit import NSSpeechSynthesizer
import sys
import Foundation
if len(sys.argv) < 2:
text = raw_input('type text to speak> ')
else:
text = sys.argv[1]
nssp = NSSpeechSynthesizer
ve = nssp.alloc().init()
ve.setRate_(100)
url = Foundation.NSURL.fileURLWithPath_('yourpath/test.aiff')
ve.startSpeakingString_toURL_(text,url)
答案 3 :(得分:0)
使用VB输入和输出仿真器电缆以大胆的态度记录任何engine.play()输出。
您将需要下载VB电缆,然后通过Windows默认设置和Windows声音设置将它们设置为Windows,然后将Audacity的输入设置为Microsoft声音映射器输入,在Audacity上单击记录并播放脚本。一旦完成Audacity,您将注意到,然后导出需要循环的内容。
此方法可能不在范围之内,但不是完美的方法,但可以在pyttsx3上使用,并且记录质量比espeak更好。
答案 4 :(得分:0)
您也可以使用Amazon Polly API:
下面提供了一个使用python的示例: