在Python中将合成的文本到语音记录到文件中

时间:2012-03-28 01:52:10

标签: python text-to-speech

我试图找到一种方法来合成语音并将其录制到音频文件中。我目前正在使用pyttsx作为我的文本到语音库,但没有一种机制可以将输出保存到文件中,只能直接从扬声器播放。我查看了detecting and recording audio以及PyAudio,但这些似乎是从麦克风输入,而不是将传出音频重定向到文件。有没有一种已知的方法可以做到这一点?

5 个答案:

答案 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的示例:

https://aws.amazon.com/blogs/machine-learning/convert-your-text-into-an-mp3-file-with-amazon-polly-and-a-simple-python-script/