#4906 @Admin 软件大哥,ai回答好像解决不了我的问题..

95.85* Posted at: 17 hours ago

在我上传srt字幕文件后进行配音,配音结果与我上传的srt内容不一致,有很多错误的地方,我也试了批量为字幕配音这个功能,也是不准确,请问该怎么解决。

4 Replies

配音结果与上传SRT字幕内容不一致,常见原因为:

  1. 字幕文件编码问题:非UTF-8编码或含有隐藏特殊字符,导致TTS引擎读取错误。
  2. TTS渠道文本规范化:开启后可能自动修改数字、缩写等,造成发音差异。
  3. Edge-TTS限流或语言角色不匹配:可能自动回退到默认音色,生成不相关语音。

解决方案:

  1. 检查字幕文件:用记事本另存为UTF-8编码,并删除多余空行、不可见字符。
  2. 更换配音渠道:优先尝试OpenAI-TTSAzure-TTS(需配置API Key),避免免费渠道限流问题。
  3. 关闭文本规范化:菜单 → 工具 → 高级选项 → 字幕配音调整 → 取消勾选“文本规范化”。
  4. 分段测试:仅保留一小段SRT字幕(如10行)测试,排除长文本批量处理异常。

如果以上无效,请提供logs/目录下最新日志文件底部30行内容,以便进一步分析。

[DEBUG] [Audio-Sync] Line=19 | 音频溢出截断 5710->5666 | [current_slot_audio_len=5710 sk


=5666] | Timeline: 67010 -> 72676
[DEBUG] [Audio-Sync] Line=20 | 音频溢出截断 3260->3233 | [current_slot_audio_len=3260 sk
=3233] | Timeline: 72676 -> 75909
[DEBUG] [Audio-Sync] Line=21 | 音频溢出截断 4390->4366 | [current_slot_audio_len=4390 sk
=4366] | Timeline: 75909 -> 80275
[DEBUG] [Audio-Sync] Line=22 | 音频末尾补静音 16ms | [current_slot_audio_len=6450 sk
=6466] | Timeline: 80275 -> 86741
[DEBUG] [Audio-Sync] Line=23 | 音频溢出截断 1050->966 | [current_slot_audio_len=1050 sk
=966] | Timeline: 86741 -> 87707
[DEBUG] [Audio-Sync] Line=24 | 音频溢出截断 5530->5500 | [current_slot_audio_len=5530 sk
=5500] | Timeline: 87707 -> 93207
[DEBUG] [Audio-Sync] Line=25 | 音频末尾补静音 20ms | [current_slot_audio_len=5680 sk
=5700] | Timeline: 93207 -> 98907
[DEBUG] [Audio-Sync] Line=26 | 音频溢出截断 3700->3666 | [current_slot_audio_len=3700 sk
=3666] | Timeline: 98907 -> 102573
[DEBUG] [Audio-Sync] Line=27 | 音频溢出截断 3440->3433 | [current_slot_audio_len=3440 sk
=3433] | Timeline: 102573 -> 106006
[DEBUG] [Audio-Sync] Line=28 | 音频溢出截断 4080->4066 | [current_slot_audio_len=4080 sk
=4066] | Timeline: 106006 -> 110072
[DEBUG] [Audio-Sync] Line=29 | 音频溢出截断 1370->1333 | [current_slot_audio_len=1370 sk
=1333] | Timeline: 110072 -> 111405
[DEBUG] [Audio-Sync] Line=30 | 音频溢出截断 5600->5566 | [current_slot_audio_len=5600 sk
=5566] | Timeline: 111405 -> 116971
[DEBUG] [Audio-Sync] Line=31 | 音频溢出截断 3660->3600 | [current_slot_audio_len=3660 sk
=3600] | Timeline: 116971 -> 120571
[DEBUG] [Audio-Sync] Line=32 | 音频溢出截断 3500->3466 | [current_slot_audio_len=3500 sk
=3466] | Timeline: 120571 -> 124037
[DEBUG] [Audio-Sync] Line=33 | 音频溢出截断 3130->3100 | [current_slot_audio_len=3130 sk
=3100] | Timeline: 124037 -> 127137
[DEBUG] [Audio-Sync] Line=34 | 音频溢出截断 7590->7566 | [current_slot_audio_len=7590 sk
=7566] | Timeline: 127137 -> 134703
[DEBUG] concat_txt='A:/BaiduNetdiskDownload/py/tmp/21376/446e9346ad/final_audio_concat.txt',filelist[0]='A:/BaiduNetdiskDownload/py/tmp/21376/446e9346ad/silence_head_0.wav'
[DEBUG] [Audio-Concat] 最终音频已生成: A:/BaiduNetdiskDownload/py/tmp/21376/446e9346ad/target-dubbing.wav

[DEBUG] 跳过二次识别
[DEBUG] [FFMPEG-CMD]:
ffmpeg -hide_banner -nostdin -ignore_unknown -threads 0 -y -i novoice.mp4 -vf tpad=stop_mode=clone:sk


=0.037 -c:v libx264 -crf 0 -preset veryslow -an final_video_with_freeze_lastend.mp4

[DEBUG] 视频定格应延长37ms,实际向上取整秒延长0.037s,操作成功。
[DEBUG] 返回缓存的编解码器 Windows-264: h264_nvenc
[DEBUG] [最终视频合成]copy模式,无需重新编码:
['-y', '-progress', 'compose1780468264.488262.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-map', '0:v', '-map', '1:a', '-c:v', 'copy', '-c:a', 'copy', '-movflags', '+faststart', '-fps_mode', 'vfr', '-t', '134.700000', 'laste_target.mp4']
[DEBUG] [FFMPEG-CMD]:
ffmpeg -hide_banner -nostdin -ignore_unknown -threads 0 -y -progress compose1780468264.488262.txt -i novoice.mp4 -i will_embed.m4a -map 0:v -map 1:a -c:v copy -c:a copy -movflags +faststart -fps_mode vfr -t 134.700000 laste_target.mp4

日志显示配音过程中的音频同步(溢出截断、补静音)均正常,没有报错。这说明配音引擎本身已成功生成音频,但生成的语音内容与您的SRT字幕不一致,常见原因如下:

  1. 字幕文件编码或格式问题
    非UTF-8编码或含有隐藏控制字符(如 \uFEFF\r 多余空格),导致TTS引擎在读取时跳转/乱序读取。
  2. TTS文本规范化被意外开启
    菜单 → 工具 → 高级选项 → 字幕配音调整 → 取消勾选“文本规范化”(此选项会自动修正数字、缩写等,造成发音内容与实际字幕不同)。
  3. Edge-TTS限流/语言角色错误
    免费渠道在高并发时可能静默回退到默认音色,或错误匹配语言,输出完全不相关的语音。建议优先改用OpenAI-TTS或Azure-TTS(需配置API Key),排除免费渠道的限流问题。
  4. 音频加速/对齐算法导致内容跳跃
    日志中大量“音频溢出截断”是正常同步行为,但若同时开启了“音频加速”+“视频慢速”,加速算法可能误切到相邻字幕片段。
    检查主界面:取消勾选“音频加速”和“视频慢速”,仅保留“移除字幕间静音”进行测试。

快速排查步骤

  1. 验证字幕文件

    • 用记事本打开SRT,另存为 UTF-8(无签名) 格式。
    • Notepad++ 显示所有字符,删除多余的空白行、末行空行、不可见符号。
  2. 关闭文本规范化
    菜单 → 工具 → 高级选项 → 字幕配音调整 → 取消“文本规范化”。
  3. 更换配音渠道
    首选 OpenAI-TTS(设置API Key)或 Azure-TTS,避免免费渠道问题。
  4. 单条测试
    仅保留SRT的前3行字幕,重复配音,对比内容是否一致。

如果上述操作后仍然错误,请提供 logs/ 目录下最新的日志文件(搜索包含 tostxttts 字样的行),以便确认TTS实际接收到的文本内容。

不准确是什么意思?字幕文本是 A,发音是B

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update. Dondate: ko-fi.com/jianchang512

Related resource