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

Discord TTS机器人显示正在播放音频但无声音输出问题求助

Discord TTS机器人无声音输出修复方案

1. 修复代码中的拼写错误与过时API调用

你代码中存在两处明显的语法错误,会导致语音通道切换逻辑异常:

# 原错误代码
await bot.voice_cilent_in(ctx.message.server).disconnect()
  • 拼写错误:voice_cilent_in 应为 voice_client_in
  • 过时属性:discord.py v1.0+ 版本已经废弃server属性,统一改用guild
    修改后代码为:
await bot.voice_client_in(ctx.guild).disconnect()

2. 补充FFmpeg播放参数

默认的FFmpegPCMAudio参数不匹配Discord要求的音频传输规则,会出现显示播放但无声音的问题,修改播放代码为:

vc.play(discord.FFmpegPCMAudio(
    executable="ffmpeg.exe", 
    source=f"./storage/{ctx.guild.id}/tts-result.mp3", 
    before_options="-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5"
), after=lambda e: print(e))
  • 显式指定executable为同目录下的ffmpeg.exe,避免和系统环境变量中的FFmpeg版本冲突
  • 添加重连参数避免音频加载异常

3. 开启语音相关Intents

Discord现在要求显式声明Intents才能正常使用语音功能,修改bot初始化代码:

intents = discord.Intents.default()
intents.voice_states = True
bot = commands.Bot(command_prefix="&", intents=intents)

同时需要前往Discord开发者后台的机器人设置页,在「Privileged Gateway Intents」板块开启Voice State Intent开关。

4. 检查权限配置

  • 确认机器人在当前语音频道被授予了说话、语音活动权限
  • 确认你的Discord客户端没有静音机器人或者当前语音频道

5. 验证文件与逻辑合理性

  • 手动打开生成的tts-result.mp3确认文件本身可正常播放,排除gTTS生成音频损坏的问题
  • 现有逻辑会每次覆盖同一个音频文件,多请求并发时会出现读写冲突,建议改为生成随机文件名的临时音频,播放完成后自动删除避免冲突

内容的提问来源于stack exchange,提问作者팬케이크

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:06