#5423 ErrorTraceback (most recent call last):File "videotrans\mainwin\_actions.py", line 169, in tts_type_changeFile "videotra

171.234* Posted at: 10 hours ago

Error
Traceback (most recent call last):
File "videotrans\mainwin\_actions.py", line 169, in tts_type_change
File "videotrans\tts\__init__.py", line 134, in is_allow_lang
TypeError: unhashable type: 'list'

OK
khi tôi chọn Qwen-TTS(local built-in thì báo luôn lỗi này

7 Replies

Lỗi này xảy ra do một bug nội bộ trong hàm is_allow_lang của module Qwen-TTS (tệp videotrans\tts\__init__.py, dòng 134). Nguyên nhân là hàm này nhận được một danh sách (list) thay vì một chuỗi (str), dẫn đến lỗi TypeError: unhashable type: 'list'. Bug này đã được sửa trong bản phát hành mới nhất.

Cách khắc phục:

  1. Cập nhật lên phiên bản mới nhất (v4.03-0622 hoặc mới hơn). Tải gói đầy đủ 2.6GB từ trang chủ, sau đó giải nén và chạy lại. Nếu đang dùng bản vá (260MB), hãy tải gói đầy đủ trước.
  2. Nếu bạn đã dùng bản mới nhất mà vẫn gặp lỗi, hãy xóa cấu hình cũ để khôi phục mặc định:

    • Vào thư mục cài đặt, mở thư mục videotrans/.
    • Xóa các tệp: params.json, cfg.json, codec.json, ass.json.
    • Khởi động lại phần mềm.

Sau đó chọn lại Qwen-TTS (local built-in) và thử lại.

Tài liệu tham khảo:

tôi hiểu rồi nếu tôi chọn target lang là vietnamese thì chọn qwen3 sẽ lỗi còn tiếng anh thì k sao
bản local nào nói tiếng việt chuẩn mà hay nhất, hoăc clone tiếng việt như nào cho nó hay nhất

Lỗi xảy ra vì Qwen-TTS (local built-in) không hỗ trợ tiếng Việt. Nó chỉ hỗ trợ: Trung, Anh, Nhật, Hàn, Đức, Pháp, Nga, Bồ Đào Nha, Tây Ban Nha, Ý. Khi bạn chọn target language là Vietnamese, module gặp lỗi unhashable type: 'list'.

Giải pháp cho tiếng Việt

1. Dùng local TTS có hỗ trợ tiếng Việt

KênhLoạiHỗ trợ tiếng Việt?
Piper-TTS (local built-in)Local, offline (hỗ trợ 20+ ngôn ngữ, trong đó có tiếng Việt)
Edge-TTS (free)Online, miễn phí (giọng vi-VN-HoaiMyNeural, vi-VN-NamMinhNeural)
Qwen-TTS (local)LocalKhông (chỉ Trung/Anh/Nhật/Hàn/Đức/Pháp/Nga/Bồ/Ý/TBN)
MOSS-TTS-NanoLocalKhông
ChatterBoxLocalKhông

Khuyến nghị: Dùng Edge-TTS (chất lượng tốt, free, hỗ trợ tiếng Việt chuẩn) hoặc Piper-TTS (local, nhưng chất lượng có thể thấp hơn Edge-TTS).

2. Clone giọng tiếng Việt (dùng reference audio)

Các kênh local hỗ trợ clone (cần file tham chiếu 5-10s):

  • OmniVoice-TTS (local API): Hỗ trợ tất cả ngôn ngữ, clone chất lượng cao.
  • GPT-SoVITS (local API): Hỗ trợ Trung/Anh/Nhật/Hàn, có thể clone giọng Việt nếu reference audio là tiếng Việt.
  • F5-TTS (local API): Hỗ trợ Trung/Anh.
  • CosyVoice (local API): Hỗ trợ Trung/Anh/Nhật/Hàn + 10 ngôn ngữ phổ biến (có thể chứa tiếng Việt? Không rõ, cần kiểm tra).
  • Index-TTS (local API): Hỗ trợ Trung/Anh.
  • ChatterBox-TTS (local built-in): Hỗ trợ nhiều ngôn ngữ (có tiếng Việt? Kiến thức không nói rõ, nhưng ChatterBox có thể hỗ trợ tiếng Việt vì danh sách có Malay, Indonesian...).

Cách làm clone tiếng Việt:

  1. Chuẩn bị file wav 5-10s, giọng nói tiếng Việt rõ ràng, không nhiễu.
  2. Copy file đó vào thư mục f5-tts/ (hoặc thư mục tương ứng của từng kênh).
  3. Vào Menu → TTS Settings → Set reference audio, thêm dòng: <tên file.wav>#<nội dung lời nói trong file>.
  4. Lưu lại, quay lại giao diện chính, chọn giọng clone đó.

3. Giải pháp tối ưu nhất cho tiếng Việt

  • Dùng Edge-TTS (free): Chất lượng cao, dễ dùng, không cần cài đặt thêm. Chỉ cần chọn Edge-TTS ở kênh giọng nói, sau đó chọn giọng vi-VN-HoaiMyNeural (nữ) hoặc vi-VN-NamMinhNeural (nam).
  • Nếu muốn local hoàn toàn: Dùng Piper-TTS (có hỗ trợ tiếng Việt, nhưng chất lượng có thể không bằng Edge-TTS).
  • Nếu muốn clone giọng riêng: Dùng OmniVoice-TTS (hỗ trợ clone mọi ngôn ngữ, chất lượng tốt nhất hiện tại) hoặc GPT-SoVITS (nếu bạn có file tham chiếu tiếng Việt).

Lưu ý khi clone: Chất lượng clone phụ thuộc vào reference audio. Hãy đảm bảo file wav:

  • Dài 5-10 giây, không ngắn hơn 3s, không dài hơn 12s.
  • Giọng rõ ràng, không tạp âm nền.
  • Đặt tên không dấu, không khoảng trắng.

Tài liệu tham khảo:


Error

omnivoice This channel needs deployed and started before available
self.api_url='http://127.0.0.1:7860'
[WinError 10061] No connection could be made because the target machine actively refused it
Traceback (most recent call last):

File "httpx\_transports\default.py", line 101, in map_httpcore_exce

OK Show Details... Report Error

omnivoice This channel needs deployed and started before available
self.api_url='http://127.0.0.1:7860'
[WinError 10061] No connection could be made because the target machine actively refused it
Traceback (most recent call last):
File "httpx\_transports\default.py", line 101, in map_httpcore_exceptions
File "httpx\_transports\default.py", line 250, in handle_request
File "httpcore\_sync\connection_pool.py", line 216, in handle_request
File "httpcore\_sync\connection_pool.py", line 196, in handle_request
Fil
......
n _send_handling_auth
File "httpx\_client.py", line 979, in _send_handling_redirects
File "httpx\_client.py", line 1014, in _send_single_request
File "httpx\_transports\default.py", line 249, in handle_request
File "contextlib.py", line 153, in exit
File "httpx\_transports\default.py", line 118, in map_httpcore_exceptions
httpx.ConnectError: [WinError 10061] No connection could be made because the target machine actively refused it

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "videotrans\task\only_one.py", line 86, in run
File "videotrans\task\trans_create.py", line 667, in dubbing
File "videotrans\task\trans_create.py", line 990, in _tts
File "videotrans\tts\__init__.py", line 192, in run
File "videotrans\tts\_base.py", line 93, in run
File "videotrans\tts\_base.py", line 208, in _exec
File "videotrans\tts\_base.py", line 168, in _local_mul_thread
File "videotrans\tts\_base.py", line 220, in _item_task
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 400, in
File "concurrent\futures\_base.py", line 451, in result
File "concurrent\futures\_base.py", line 403, in __get_result
File "tenacity\__init__.py", line 480, in call
File "videotrans\tts\_omnivoice.py", line 124, in _run
File "tenacity\__init__.py", line 338, in wrapped_f
File "tenacity\__init__.py", line 477, in call
File "tenacity\__init__.py", line 378, in iter
File "tenacity\__init__.py", line 400, in
File "concurrent\futures\_base.py", line 451, in result
File "concurrent\futures\_base.py", line 403, in __get_result
File "tenacity\__init__.py", line 480, in call
File "videotrans\tts\_gradio.py", line 74, in _send
videotrans.configure.excepts.StopTask: omnivoice This channel needs deployed and started before available
self.api_url='http://127.0.0.1:7860'
[WinError 10061] No connection could be made because the target machine actively refused it

cfg=[TaskCfgVTT]当前工作模式: 翻译视频或音频 单视频模式
原始输入文件名: C:/Users/admin/Desktop/Video Downloads/123.mp4,
输出结果保存到文件夹: C:/Users/admin/Documents/win-pyvideotrans-v4.03-0622/123-mp4,
临时文件夹: C:/Users/admin/Documents/win-pyvideotrans-v4.03-0622/tmp/29444/3b9c27fe6a
未选 清理已存在
已选 启用CUDA加速
未选 降噪
ASR Channel:faster-whisper(LocalBuilt-in), model_name: large-v3-turbo, 发音语言: Simplified Chinese, 断句方式:默认断句
Trans Channel:Microsoft (Free),原始语言:Simplified Chinese,目标语言:Vietnamese, 已选 Send SRT
Dubb Channel:OmniVoice(LocalAPI), 角色:clone, 配音语言:Vietnamese, 未选 二次语音识别
音量:+0%, 语速:+0%, 已选 音频加速, 未选 视频慢速
字幕: Embed Hard Subs

代理地址:

tôi chọn OmniVoice-TTS (local API) thì lúc chạy báo lỗi này mặc dù tôi thấy trong f5 đã có file này rồi mà nverguo.wav nhưgn nó không clone được mà vẫn lỗi image

Lỗi này xảy ra vì OmniVoice-TTS (local API) chưa được triển khai và khởi động. Mặc dù bạn đã có file nverguo.wav trong thư mục f5-tts, nhưng OmniVoice cần một service riêng chạy nền (thường ở http://127.0.0.1:7860). Lỗi [WinError 10061] cho thấy không có chương trình nào lắng nghe tại địa chỉ đó.

Cách khắc phục:

  1. Triển khai OmniVoice local API:

    • Tải và cài đặt OmniVoice từ hướng dẫn chính thức (cần Python 3.10, uv hoặc pip).
    • Sau khi cài đặt, chạy service:

      uv run webui.py   # hoặc python webui.py tuỳ theo repo
    • Đảm bảo service hiển thị Running on http://127.0.0.1:7860.
    • Quan trọng: Không đóng cửa sổ terminal đó; chạy service trước khi bắt đầu xử lý trong pyVideoTrans.
  2. Kiểm tra lại cài đặt trong pyVideoTrans:

    • Vào Menu → TTS Settings → OmniVoice, xác nhận API URLhttp://127.0.0.1:7860.
    • File tham chiếu nverguo.wav phải nằm trong thư mục f5-tts/ ở thư mục gốc của phần mềm.
    • Mở Menu → TTS Settings → Set reference audio, thêm dòng: nverguo.wav#Nội dung lời nói trong file đó.
  3. Giải pháp thay thế (dễ hơn):

    • Edge-TTS (free): Không cần triển khai gì, chọn kênh Edge-TTS, vai vi-VN-HoaiMyNeural hoặc vi-VN-NamMinhNeural – chất lượng rất tốt cho tiếng Việt, không clone.
    • GPT-SoVITS (local API): Nếu bạn đã cài GPT-SoVITS, nó cũng hỗ trợ clone tiếng Việt qua reference audio (cần đặt file vào thư mục gốc của GPT-SoVITS, không phải f5-tts).

Tài liệu tham khảo:

khi mà clone xong 1 giọng thì lần sau tôi có phải làm như trên không hay lúc đó chỉ cần chọn omni rồi chọn giọng đã clone đó là chạy được nhanh luôn

Sau khi bạn đã clone và đăng ký giọng (thêm reference audio vào danh sách), lần sau bạn vẫn bắt buộc phải chạy service OmniVoice trước, nhưng không cần đăng ký lại giọng.

Cụ thể:

  1. Service OmniVoice luôn phải chạy nền:

    • Mỗi lần muốn dùng OmniVoice, bạn phải mở terminal và chạy service (ví dụ uv run webui.py hoặc python webui.py) và giữ nguyên terminal đó.
    • Nếu đóng terminal, service sẽ tắt, và pyVideoTrans sẽ báo lỗi giống như lần trước.
  2. Giọng clone đã đăng ký sẽ được lưu vĩnh viễn:

    • File .wav bạn đặt trong thư mục f5-tts/ và dòng cấu hình trong Menu -> TTS Settings -> Set reference audio sẽ được giữ nguyên.
    • Lần sau, chỉ cần chọn kênh OmniVoice, vai giọng (ví dụ nverguo.wav) là có thể dùng ngay, không cần đăng ký lại.

Quy trình tóm tắt cho lần dùng sau:

  1. Bật service OmniVoice (giữ terminal).
  2. Mở pyVideoTrans, chọn kênh OmniVoice.
  3. Chọn giọng clone đã có trong danh sách (không cần cấu hình lại).
  4. Bấm "Bắt đầu thực hiện" – mọi thứ hoạt động ngay.

Nếu service chưa chạy hoặc bị tắt, bạn sẽ gặp lại lỗi [WinError 10061] dù giọng clone vẫn có trong danh sách.

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