如何将 pyttsx3 结果保存为 MP3 或 WAV 文件?
pyttsx3 是一个 Python 库,它提供了使用 TTS 合成的简单接口。文本转语音 (TTS) 将书面文本转换为口语。它主要用于从文本生成语音并自定义语音音频的各个方面。pyttsx3 库生成的语音输出通常以 MP3 或 WAV 等流行格式保存为音频文件。本文将讨论如何将 pyttsx3 结果保存为 MP3 或 WAV 文件。
算法
将 pyttsx3 结果保存为 mp3 或 WAV 文件的通用算法如下:
导入所需的库:pyttsx3、time 和 os。
使用 pyttsx3.init() 初始化 pyttsx3 引擎。
使用 engine.setProperty(property_name, value) 设置任何所需的 TTS 属性。此步骤是可选的。
使用 engine.say(text) 为 TTS 合成提供文本输入。
指定临时 WAV 文件的输出文件路径和名称。
使用 engine.save_to_file(text, output_path) 将语音保存到临时 WAV 文件中。
使用 engine.runAndWait() 运行 TTS 合成并等待其完成。
使用音频转换工具(如 ffmpeg)将临时 WAV 文件转换为 MP3 格式。使用 os.system("ffmpeg −i input.wav output.mp3") 执行转换。确保 ffmpeg 已安装并可在系统的 PATH 中访问。
最终合成的语音现在以指定的 MP3 或 WAV 文件格式保存。
方法 1:使用 pydub 库保存为 MP3
pydub 库简化了将 pyttsx3 结果保存为 MP3 格式的过程。只需几行代码,您就可以使用 export() 方法将临时 WAV 文件转换为 MP3。它提供了一种处理音频文件的便捷方式,并提供了处理不同格式的灵活性。
语法
audio.export(output_path, format="mp3")
此处,audio.export(output_path, format="mp3") 与 pydub 库一起使用以导出音频文件。它指定输出路径和格式,在本例中,将音频保存为 MP3 文件。
示例
在下面的示例中,pyttsx3 生成的临时 WAV 文件并使用 pydub 的 export() 方法将其转换为 MP3 文件。合成的语音将保存为名为"output.mp3"的 MP3 文件。 pydub 库简化了将音频文件导出为不同格式(包括 MP3)的过程。
from pydub import AudioSegment audio = AudioSegment.from_wav("output.wav") audio.export("output.mp3", format="mp3")
输出

上图显示 output.mp3 文件已成功保存为当前目录中的 output.wav 文件。
方法 2:使用 wave 模块保存为 WAV
wave 模块是一个内置的 Python 模块,允许您将 pyttsx3 结果保存为 WAV 格式。通过使用 wave.open() 函数,您可以设置 WAV 文件的必要参数并将音频帧写入其中。此方法提供了一种在 Python 中处理 WAV 文件的基本而直接的方法。
语法
audio_file.setparams(params)
此处,audio_file.setparams(params) 与 wave 模块一起使用,用于设置 WAV 文件的参数,例如通道数、采样宽度、帧速率和压缩类型。
audio_file.writeframes(audio_data)
这里,语法audio_file.writeframes(audio_data)用于将audio_data变量表示的音频帧写入WAV文件。它根据指定的参数将音频数据保存到文件中。
示例
在下面的示例中,使用wave模块将pyttsx3生成的WAV音频数据保存到WAV文件中。它打开临时WAV文件,设置输出文件的参数(例如通道数、采样宽度、帧速率和压缩类型),并将音频帧写入名为"output_saved.wav"的输出文件。
import wave audio = open("output.wav", 'rb').read() params = (2, 2, 44100, 0, 'NONE', 'not compressed') with wave.open("output_saved.wav", 'wb') as audio_file: audio_file.setparams(params) audio_file.writeframes(audio)
输出

上图显示 output.mp3 文件转换为 output_saved.wav 文件,然后保存在当前目录中。
方法 3:使用 soundfile 库保存为 WAV
soundfile 库提供了将 pyttsx3 结果保存为 WAV 格式的全面解决方案。它提供了一个高级接口来读取和写入各种格式的音频数据。通过使用 write() 函数,您可以轻松地将 pyttsx3 生成的音频数据保存到新的 WAV 文件中。
语法
soundfile.write(output_path, audio_data, sample_rate)
这里,soundfile.write(output_path, audio_data, sample_rate) 与 soundfile 库一起使用,将音频数据保存到文件中。它使用给定的 sample_rate 将包含音频样本的 audio_data 数组写入 output_path 指定的文件。此语法提供了一种方便的方法,可以将音频数据保存到具有所需采样率和文件路径的 WAV 文件中。
示例
在下面的示例中,我们使用 soundfile 库从 pyttsx3 生成的临时 WAV 文件中读取音频数据和采样率。然后,它使用 write() 函数将音频数据保存到名为"output_saved.wav"的新 WAV 文件中。 soundfile 库提供了一种简单的方法,可以使用可自定义的选项将音频数据保存到 WAV 文件中。
import soundfile as sf audio, sample_rate = sf.read("output.wav") sf.write("output_saved.wav", audio, sample_rate)
输出

在这里,mp3 文件转换为 .wav 文件,并保存为 output_saved.wav 文件,位于 mp3 文件所在的同一目录中。
结论
在本文中,我们讨论了如何通过保存将文本转换为语音将 pyttsx3 结果转换为 mp3 或 WAV 文件。我们介绍了必要的步骤,从安装 pyttsx3 到初始化引擎、合成语音以及将输出保存为音频文件。通过遵循这些步骤,您可以利用 pyttsx3 的功能生成高质量语音并将其保存为所需的格式,以便在您的应用程序或项目中进一步使用。