You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的pyttsx3将文本语音直接转换为WAV文件?

使用pyttsx3实现文本转语音并保存为WAV文件

当然可以实现,下面是两种实用的方案:

方案1:Windows平台直接生成(依赖系统SAPI5)

如果你的运行环境是Windows,无需额外依赖录制工具,直接调用系统语音合成接口即可生成WAV文件:

import win32com.client

def text_to_wav(text, output_path):
    voice_engine = win32com.client.Dispatch("SAPI.SpVoice")
    file_stream = win32com.client.Dispatch("SAPI.SpFileStream")
    # 以写入模式打开文件流
    file_stream.Open(output_path, 3)
    voice_engine.AudioOutputStream = file_stream
    voice_engine.Speak(text)
    file_stream.Close()

# 调用示例
text_to_wav("你好,这是生成的语音文件", "output.wav")

方案2:跨平台录制保存(结合PyAudio)

如果需要跨Windows、Linux、macOS使用,可以通过PyAudio捕获pyttsx3的音频输出并保存为WAV文件:

首先安装所需依赖:

pip install pyttsx3 pyaudio wave

然后使用以下代码:

import pyttsx3
import pyaudio
import wave
import threading
import time

def tts_to_wav(text, output_path):
    # 初始化pyttsx3引擎
    engine = pyttsx3.init()
    # 可自定义语音参数,例如:
    # engine.setProperty('rate', 150)  # 语速
    # engine.setProperty('volume', 0.8)  # 音量

    # 音频参数配置
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 22050
    CHUNK = 1024

    audio = pyaudio.PyAudio()
    # 打开音频录制流
    stream = audio.open(format=FORMAT, channels=CHANNELS,
                        rate=RATE, input=True, frames_per_buffer=CHUNK)
    frames = []

    # 单独线程运行语音合成,避免阻塞录制
    def speak_task():
        engine.say(text)
        engine.runAndWait()

    threading.Thread(target=speak_task).start()

    # 等待引擎启动后开始录制
    time.sleep(0.5)
    while engine._inLoop:
        data = stream.read(CHUNK)
        frames.append(data)

    # 停止录制并释放资源
    stream.stop_stream()
    stream.close()
    audio.terminate()

    # 写入WAV文件
    with wave.open(output_path, 'wb') as wf:
        wf.setnchannels(CHANNELS)
        wf.setsampwidth(audio.get_sample_size(FORMAT))
        wf.setframerate(RATE)
        wf.writeframes(b''.join(frames))

# 调用示例
tts_to_wav("这是跨平台生成的语音文件", "cross_platform_output.wav")

注意事项

  • 方案1仅适用于Windows,依赖系统自带的SAPI5引擎,无需额外安装第三方库。
  • 方案2为跨平台方案,Linux/macOS环境下需先安装portaudio系统依赖(如Ubuntu执行sudo apt-get install portaudio19-dev)才能正常安装PyAudio。
  • 可以通过engine.setProperty()调整pyttsx3的语速、音量、语音类型等参数,再生成符合需求的WAV文件。

内容的提问来源于stack exchange,提问作者admdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:35:19