#4378 TaskCfgTTS(is_cuda=False, uuid='77de970a7c', cache_folder='/Users/junyouchen/Desktop/pyvideotrans/tmp/5965/77de970a7c',

51.75* Posted at: 1 hour ago 👁12

配音阶段出错 [piper TTS(本地)] 程序内部错误:未定义的变量 'None'
Traceback (most recent call last):
File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/task/job.py", line 213, in run

trk.dubbing()

File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/task/_dubbing.py", line 51, in dubbing

self._tts()

File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/task/_dubbing.py", line 209, in _tts

tts.run(

File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/tts/__init__.py", line 430, in run

PiperTTS(**kwargs).run()

File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/tts/_base.py", line 137, in run

self._exec()

File "/Users/junyouchen/Desktop/pyvideotrans/videotrans/tts/_piper.py", line 76, in _exec

self.error=e

UnboundLocalError: local variable 'e' referenced before assignment
TaskCfgTTS(is_cuda=False, uuid='77de970a7c', cache_folder='/Users/junyouchen/Desktop/pyvideotrans/tmp/5965/77de970a7c', target_dir='/Users/junyouchen/Downloads', source_language=None, source_language_code=None, source_sub=None, source_wav=None, source_wav_output=None, target_language=None, target_language_code='en', target_sub='/Users/junyouchen/Downloads/2026年师大附中高一下英语听力(1).srt', target_wav='/Users/junyouchen/Downloads/2026年师大附中高一下英语听力(1).wav', target_wav_output=None, name='/Users/junyouchen/Downloads/2026年师大附中高一下英语听力(1).srt', noextname='2026年师大附中高一下英语听力(1)', basename='2026年师大附中高一下英语听力(1).srt', ext='srt', dirname='/Users/junyouchen/Downloads', shound_del_name=None, tts_type=3, volume='+0%', pitch='+0Hz', voice_rate='+0%', voice_role='en_GB-alan-medium', voice_autorate=False, video_autorate=False, remove_silent_mid=False, align_sub_audio=False)


=
system:macOS-26.4.1-arm64-arm-64bit
version:v3.99
frozen:False
language:zh
root_dir:/Users/junyouchen/Desktop/pyvideotrans
Python: 3.10.19 (main, Feb 12 2026, 00:36:33) [Clang 21.1.4 ]

1 Replies

这是由 Piper TTS 内部代码缺陷,以及文件路径含有中文特殊符号共同导致的错误。

核心原因
UnboundLocalError: local variable 'e' referenced before assignment 是 Piper TTS 模块的一个代码 Bug。程序企图在出错时引用错误变量,但因为文件路径问题,程序在执行初期就陷入异常,导致这个 Bug 暴露了出来。

具体来说,你的 SRT 字幕文件路径和名称中包含中文括号:
/Users/junyouchen/Downloads/2026年师大附中高一下英语听力(1).srt
此类全角符号极易导致底层命令或路径解析异常,从而触发该 Bug。

解决方案

  1. 重命名文件:将 2026年师大附中高一下英语听力(1).srt 以及对应的音频/视频文件重命名为纯英文或数字的名字。

    • 修改后示例2026_English_Listening_01.srt
  2. 简化文件路径:将该文件移动到一个浅层且不含中文的目录下。建议直接放在 /Users/junyouchen/Downloads/ 根目录,但确保文件名也不含中文。
  3. 避开缺陷渠道(临时):Piper TTS 的这个 Bug 可能尚未修复。既然你使用的是免费配音渠道,强烈建议切换到 Edge-TTS。它也是免费的,稳定性远高于 Piper,且支持英语配音。
  4. 切换操作:在主界面“配音渠道”下拉框中直接选择 Edge-TTS(免费),然后选择一个英语发音人即可(如 en-US-AvaMultilingualNeural)。

请查阅相关文档:

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.

Related resource