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

树莓派Python 3.7 TTS生成音频9次后无声音问题求助

问题

环境:Raspberry PI、Python 3.7
程序读取城市列表,用gTTS生成并播报城市名音频,前9个城市音频正常,之后仅生成空音频文件,无声音输出;程序无报错持续运行。循环周期240秒,每小时调用15次TTS,在gTTS每小时100次的调用限制内。重启程序后,仍仅前9次音频正常,后续再次出现无声音情况。

相关代码:

# TTS Name
def tts_name(name):
    global saveit
    # TTS and Save City Name
    tts = gtts.gTTS(name)
    saveit = "Name.mp3"  
    tts.save(saveit)

# Play City Name
def Play_Name():
    # Define Media Player file
    media = vlc.MediaPlayer("/home/pi/Nextion/OpenWeather_10/" + saveit)
    # setting volume
    media.audio_set_volume(90)
    # Play Name
    media.play() 
分析与修复

核心原因

每次生成的音频都复用Name.mp3文件名,而vlc的play()是非阻塞调用,前一次播放的进程可能还没释放文件锁,导致后续gTTS写入失败,生成空文件。另外,重复创建vlc播放器实例也可能积累资源引发异常。

修复步骤

  1. 使用唯一文件名避免冲突
    每次生成音频时生成唯一文件名,播放完成后删除临时文件,彻底解决文件占用问题:
import os
import time
import uuid
import gtts
import vlc

def tts_name(name):
    global saveit
    # 生成8位随机字符串作为文件名后缀,确保唯一
    saveit = f"Name_{uuid.uuid4().hex[:8]}.mp3"  
    tts = gtts.gTTS(name)
    tts.save(saveit)

def Play_Name():
    media_path = f"/home/pi/Nextion/OpenWeather_10/{saveit}"
    media = vlc.MediaPlayer(media_path)
    media.audio_set_volume(90)
    media.play()
    # 等待播放完成,避免文件被占用
    while media.is_playing():
        time.sleep(0.1)
    # 停止播放并释放资源
    media.stop()
    # 删除临时音频文件
    os.remove(media_path)
  1. 复用vlc播放器实例(可选优化)
    频繁创建播放器实例可能消耗资源,复用同一个实例能提升稳定性:
# 全局初始化播放器实例
player = vlc.MediaPlayer()

def Play_Name():
    media_path = f"/home/pi/Nextion/OpenWeather_10/{saveit}"
    media = vlc.Media(media_path)
    player.set_media(media)
    player.audio_set_volume(90)
    player.play()
    while player.is_playing():
        time.sleep(0.1)
    player.stop()
    os.remove(media_path)
  1. 显式关闭gTTS连接(可选)
    连续调用gTTS可能存在会话缓存问题,显式关闭连接可避免异常:
def tts_name(name):
    global saveit
    saveit = f"Name_{uuid.uuid4().hex[:8]}.mp3"  
    tts = gtts.gTTS(name)
    with open(saveit, 'wb') as f:
        tts.write_to_fp(f)
    # 关闭gTTS底层HTTP连接
    tts.client.close()

内容的提问来源于stack exchange,提问作者Robert E. Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:25:30