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

Python中gTTS(Google TTS)仅单次执行有效,程序崩溃求助

解决gTTS连续生成播放音频时程序崩溃的问题

我之前也碰到过一模一样的问题!在Windows 10下用PyCharm跑gTTS+playsound,第一个音频能正常保存播放,到第二个直接就弹出python.exe停止工作的提示,折腾了好久终于找到几个靠谱的解决办法:

1. 回退playsound版本(最省心的方案)

Windows环境下新版的playsound有资源释放的bug,你把它换回1.2.2版本试试,亲测有效:

pip uninstall playsound
pip install playsound==1.2.2

这个旧版本在Windows上的资源管理稳定很多,很多开发者都靠这个解决了连续播放崩溃的问题。

2. 换用subprocess替代playsound播放

如果不想换版本,用系统自带的播放器来播放音频,能彻底避免资源占用的问题。直接用subprocess调用,代码这么写:

from gtts import gTTS
import subprocess
import os

str1 = "hello"
str2 = "world"

# 处理第一个音频
tts = gTTS(text=str1, lang='en')
tts.save("hello.mp3")
# 调用Windows自带播放器播放
subprocess.run(["start", "hello.mp3"], shell=True)
# 如果需要等待播放完再处理下一个,加个延时就行
# import time
# time.sleep(2)
os.remove("hello.mp3")  # 能正常删除就说明资源释放了

# 处理第二个音频
tts = gTTS(text=str2, lang='en')
tts.save("world.mp3")
subprocess.run(["start", "world.mp3"], shell=True)

用系统播放器播放完会自动释放文件资源,完全不会影响后续的gTTS保存操作。

3. 用临时文件存储音频

还有个思路是用临时文件来存生成的音频,播放完自动删除,根本不会有文件残留和占用的问题:

from gtts import gTTS
import playsound
import tempfile

def speak(text):
    # 创建临时MP3文件,关闭后自动删除
    with tempfile.NamedTemporaryFile(delete=True, suffix='.mp3') as temp_file:
        tts = gTTS(text=text, lang='en')
        tts.save(temp_file.name)
        playsound.playsound(temp_file.name)

# 直接调用函数就行
speak("hello")
speak("world")

这种方式的好处是不用手动管理文件,临时文件在播放完成后会自动清理,连续调用也不会出问题。

另外还要检查下你的PyCharm虚拟环境,确保gTTS和playsound都安装在当前正在用的虚拟环境里,有时候环境冲突也会导致这种莫名其妙的崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:09