#7121 No audio file was generated during the listening test.:{'text': 'नमस्ते, मेरे प्यारे दोस्त, मुझे आशा है कि आपका हर दिन स

103.206**8 Posted at: 20 days ago

No audio file was generated during the listening test.:
{'text': 'नमस्ते, मेरे प्यारे दोस्त, मुझे आशा है कि आपका हर दिन सुंदर और सुखद हो!', 'rate': '+0%', 'role': 'Madhur(Male/IN)', 'filename': '/var/folders/m_/dyn8g_sn6cj_546p_kj8r1g80000gn/T/pyvideotrans/0-1788906943.68294.wav', 'tts_type': 0, 'language': 'hi', 'volume': '+0%', 'pitch': '+0Hz'}
Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/ListenVoice.py", line 21, in run

tts.run(

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/tts/__init__.py", line 230, in run

return _cls(**kwargs).run()  # type:ignore

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/tts/_base.py", line 124, in run

raise self.error if isinstance(self.error, Exception) else DubbingSrtError(str(self.error))

videotrans.configure.excepts.DubbingSrtError: No audio file was generated during the listening test.


=
system:macOS-26.6.2-arm64-arm-64bit
version:v4.12
frozen:False
language:en_US
root_dir:/Users/kumarprashant/Local Files/pyvideotrans
Python: 3.10.21 | packaged by conda-forge | (main, Aug 21 2026, 22:37:53) [Clang 19.1.7 ]

37 Replies

#1 DeepSeek reply at 20 days ago

The error No audio file was generated during the listening test for the role Madhur(Male/IN) indicates that the Edge-TTS request was sent to Microsoft's servers, but no audio data was returned or saved to the temporary WAV file. This is almost always a network/connectivity issue or an Edge-TTS service endpoint issue on macOS source deployment.

Steps to resolve

1. Test Edge-TTS directly via command line
Run the following in your terminal to isolate the problem:

edge-tts --voice hi-IN-MadhurNeural --text "नमस्ते" --write-media /tmp/test_voice.mp3
  • If this succeeds, the issue is inside pyVideoTrans (e.g., a stale edge-tts package or a bad proxy setting).
  • If this fails, the problem is with your network, proxy, or Edge-TTS service blockage.

2. Check your network/proxy
Edge-TTS requires direct access to Microsoft's speech servers. If you have a proxy configured, it may break the connection. Create an empty file with this exact name in the software root directory (the folder containing sp.py):

edgetts-noproxy.txt

This forces Edge-TTS to bypass any proxy settings. Then retry the listening test.

3. Update the edge-tts package
Since you are running from source (frozen: False), the bundled edge-tts library may be outdated. Run:

uv sync
# or if not using uv:
pip install --upgrade edge-tts

Then restart the software.

4. Try a different voice or channel
If Edge-TTS remains unusable for Hindi, temporarily switch to another TTS channel (e.g., Qwen3-TTS(内置), OmniVoice-TTS(内置)) for the listening test. The OmniVoice-TTS channel supports voice cloning and covers Hindi well.

5. Check logs
If none of the above helps, look at logs/ in your software directory for today's log file and check for any network-level errors (e.g., 403, timeout, connection reset) around the time of the failure.


Notes on the voice name

The Edge-TTS voice name for the Madhur role should be hi-IN-MadhurNeural. The software normally maps Madhur(Male/IN) automatically, but if you manually entered a custom role name, verify it matches the exact Edge-TTS voice identifier.

#2 103.206**8 reply at 20 days ago

[WARNING] 测试硬件编码器时失败:写入 /Users/kumarprashant/Local Files/pyvideotrans/tmp/41368/test_h264_videotoolbox_1788906576287.mp4 时权限被拒绝。 command=['ffmpeg', '-y', '-hide_banner', '-t', '1', '-i', '/Users/kumarprashant/Local Files/pyvideotrans/videotrans/styles/no-remove.mp4', '-c:v', 'h264_videotoolbox', '-f', 'mp4', '/Users/kumarprashant/Local Files/pyvideotrans/tmp/41368/test_h264_videotoolbox_1788906576287.mp4']
[WARNING] 测试硬件编码器时失败:写入 /Users/kumarprashant/Local Files/pyvideotrans/tmp/41368/test_hevc_videotoolbox_1788906576296.mp4 时权限被拒绝。 command=['ffmpeg', '-y', '-hide_banner', '-t', '1', '-i', '/Users/kumarprashant/Local Files/pyvideotrans/videotrans/styles/no-remove.mp4', '-c:v', 'hevc_videotoolbox', '-f', 'mp4', '/Users/kumarprashant/Local Files/pyvideotrans/tmp/41368/test_hevc_videotoolbox_1788906576296.mp4']
[ERROR] 执行 ffmpeg 时发生未知错误,cmd=['ffmpeg', '-hide_banner', '-nostdin', '-ignore_unknown', '-threads', '0', '-y', '-i', '/var/folders/m_/dyn8g_sn6cj_546p_kj8r1g80000gn/T/pyvideotran
......

  dist._finalize_license_expression()
  /Users/kumarprashant/.cache/uv/builds-v0/.tmpCWXNSD/lib/python3.10/site-packages/setuptools/dist.py:765:
  SetuptoolsDeprecationWarning: License classifiers are deprecated.
  !!

          ********************************************************************************
          Please consider removing the following classifiers in favor of a SPDX license expression:

          License :: OSI Approved :: Apache Software License

          See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
          ********************************************************************************

  !!
    self._finalize_license_expression()
  extensions/_pynini.cpp:1353:10: fatal error: 'fst/util.h' file not found
   1353 | #include 
        |          ^~~~~~~~~~~~
  1 error generated.
  error: Command '['c++', '-Wno-unused-result', '-Wsign-compare', '-Wunreachable-code', '-DNDEBUG',
  '-g', '-fwrapv', '-O3', '-Wall', '-O3', '-arch', 'arm64', '-mmacosx-version-min=11.0',
  '-Wno-nullability-completeness', '-Wno-expansion-to-defined', '-Wno-undef-prefix',
  '-fPIC', '-Iextensions', '-I/Users/kumarprashant/.cache/uv/builds-v0/.tmpCWXNSD/include',
  '-I/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/include/python3.10', '-c',
  'extensions/_pynini.cpp', '-o', 'build/temp.macosx-11.0-arm64-cpython-310/extensions/_pynini.o', '-std=c++17',
  '-Wno-register', '-Wno-deprecated-declarations', '-Wno-unused-function', '-Wno-unused-local-typedefs',
  '-funsigned-char', '-stdlib=libc++', '-mmacosx-version-min=10.12']' returned non-zero exit status 1.

  hint: This error likely indicates that you need to install a library that provides "fst/util.h" for
  `[email protected]`

help: pynini (v2.1.6) was included because pyvideotrans (v4.11) depends on pynini

#3 DeepSeek reply at 20 days ago

Root cause:
The tmp/41368 directory (or one of its parent directories) is not writable by your user, so FFmpeg cannot create the test video files. The pynini compile error in your log is a separate install-time warning – your software may still run without it, but it is not the cause of the current failure.

Fix steps:

  1. Check and fix permissions
    Run the following commands in Terminal:

    chmod -R 777 "/Users/kumarprashant/Local Files/pyvideotrans/tmp"

    Or simply delete the whole tmp folder – pyVideoTrans will recreate it on next start:

    rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"
  2. Verify FFmpeg can write to the temp path
    Test manually:

    ffmpeg -y -hide_banner -t 1 -i "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/styles/no-remove.mp4" -c:v h264_videotoolbox -f mp4 "/Users/kumarprashant/Local Files/pyvideotrans/tmp/test_write.mp4"

    If this still fails with permission denied, check if macOS privacy settings are blocking access – go to System Settings → Privacy & Security → Full Disk Access and add your Terminal or the sp.py app.

  3. Restart pyVideoTrans after fixing permissions.
  4. If the problem persists:

    • Move the whole project to a simpler path (e.g., ~/pyvideotrans) – avoiding spaces in Local Files can help.
    • Run uv sync again to complete missing dependencies (including pynini) – the compile error indicates your environment may be incomplete.

      cd "/Users/kumarprashant/Local Files/pyvideotrans"
      uv sync
    • If uv sync fails on pynini, install OpenFST via Homebrew first:

      brew install opengrm-thrax

      Then retry uv sync.

#4 103.206**8 reply at 20 days ago

(pvt) kumarprashant@Prashants-Mac-mini pyvideotrans % brew install opengrm-thrax
==> Downloading Homebrew API data
⠚ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/




⠙ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠞ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠴ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠓ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠙ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠞ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


⠖ JSON API packages.arm64_tahoe.jws.json Downloading 15.5MB/


Warning: packages.arm64_tahoe.jws.json: update failed, falling back to cached version.
✔︎ JSON API packages.arm64_tahoe.jws.json Downloaded 15.5MB/ 15.5MB
Warning: No available formula with the name "opengrm-thrax". Did you mean openkermit?
==> Searching for similarly named formulae and casks...
==> Formulae
openkermit

To install openkermit, run:
brew install openkermit

==> Casks
openrct2 (disabled)

To install openrct2 (disabled), run:
brew install --cask openrct2 (disabled)

#5 DeepSeek reply at 20 days ago

The brew formula opengrm-thrax does not exist.

For pynini, you need OpenFST:

brew install openfst

Then rerun:

cd "/Users/kumarprashant/Local Files/pyvideotrans"
uv sync

However, the pynini compile error is a separate issue from your current failure.

The actual blocking error in your log is:

写入 /Users/kumarprashant/Local Files/pyvideotrans/tmp/41368/test_h264_videotoolbox_1788906576287.mp4 时权限被拒绝

That means the tmp folder (or a parent folder) is not writable by your user, so FFmpeg cannot create test files.

Fix the permission issue first:

rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"

Or forcibly grant write permission:

chmod -R 777 "/Users/kumarprashant/Local Files/pyvideotrans/tmp"

Then restart pyVideoTrans.

If FFmpeg still reports permission denied, check macOS Privacy & Security → Full Disk Access and add your Terminal app (or the Python interpreter used by pyVideoTrans) to the allowed list.

The pynini issue will not cause the video translation to crash immediately, but it can cause other features to fail later.

Fix it with brew install openfst and uv sync when you have time.

请查阅相关文档:

#6 103.206**8 reply at 20 days ago

Resolved 427 packages in 592ms
× Failed to build pynini==2.1.6
├─▶ The build backend returned an error
╰─▶ Call to setuptools.build_meta:__legacy__.build_wheel failed (exit status: 1)

  [stdout]
  running bdist_wheel
  running build
  running build_py
  running egg_info
  writing pynini.egg-info/PKG-INFO
  writing dependency_links to pynini.egg-info/dependency_links.txt
  writing top-level names to pynini.egg-info/top_level.txt
  reading manifest file 'pynini.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  adding license file 'LICENSE'
  adding license file 'AUTHORS'
  writing manifest file 'pynini.egg-info/SOURCES.txt'
  running build_ext
  building '_pynini' extension
  c++ -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -O3
  -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined
  -Wno-un

......

dist._finalize_license_expression()
  /Users/kumarprashant/.cache/uv/builds-v0/.tmpQH9rRS/lib/python3.10/site-packages/setuptools/dist.py:765:
  SetuptoolsDeprecationWarning: License classifiers are deprecated.
  !!

          ********************************************************************************
          Please consider removing the following classifiers in favor of a SPDX license expression:

          License :: OSI Approved :: Apache Software License

          See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
          ********************************************************************************

  !!
    self._finalize_license_expression()
  extensions/_pynini.cpp:1353:10: fatal error: 'fst/util.h' file not found
   1353 | #include 
        |          ^~~~~~~~~~~~
  1 error generated.
  error: Command '['c++', '-Wno-unused-result', '-Wsign-compare', '-Wunreachable-code', '-DNDEBUG',
  '-g', '-fwrapv', '-O3', '-Wall', '-O3', '-arch', 'arm64', '-mmacosx-version-min=11.0',
  '-Wno-nullability-completeness', '-Wno-expansion-to-defined', '-Wno-undef-prefix',
  '-fPIC', '-Iextensions', '-I/Users/kumarprashant/.cache/uv/builds-v0/.tmpQH9rRS/include',
  '-I/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/include/python3.10', '-c',
  'extensions/_pynini.cpp', '-o', 'build/temp.macosx-11.0-arm64-cpython-310/extensions/_pynini.o', '-std=c++17',
  '-Wno-register', '-Wno-deprecated-declarations', '-Wno-unused-function', '-Wno-unused-local-typedefs',
  '-funsigned-char', '-stdlib=libc++', '-mmacosx-version-min=10.12']' returned non-zero exit status 1.

  hint: This error likely indicates that you need to install a library that provides "fst/util.h" for
  `[email protected]`

help: pynini (v2.1.6) was included because pyvideotrans (v4.11) depends on pynini

#7 DeepSeek reply at 20 days ago

The pynini compile failure is caused by missing OpenFST development headers.

You installed opengrm-thrax which does not exist — you need openfst.

Run these commands in order:

brew install openfst

Then locate the OpenFST prefix:

brew --prefix openfst

It will output something like /opt/homebrew/opt/openfst (Apple Silicon) or /usr/local/opt/openfst (Intel).

Now export the compiler and linker flags before running uv sync:

export OPENFST_PREFIX="$(brew --prefix openfst)"
export CFLAGS="-I${OPENFST_PREFIX}/include"
export CPPFLAGS="-I${OPENFST_PREFIX}/include"
export LDFLAGS="-L${OPENFST_PREFIX}/lib"
export DYLD_LIBRARY_PATH="${OPENFST_PREFIX}/lib:$DYLD_LIBRARY_PATH"

Then retry:

cd "/Users/kumarprashant/Local Files/pyvideotrans"
uv sync

If uv sync still fails, you may also need to install the openfst static libraries:

brew install openfst --build-from-source

Important: your current blocking error is unrelated to pynini

The error that actually stops the video translation is:

写入 .../tmp/41368/test_h264_videotoolbox_...mp4 时权限被拒绝

That means your tmp directory is not writable.

Fix it first:

rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"

Or force permissions:

chmod -R 777 "/Users/kumarprashant/Local Files/pyvideotrans/tmp"

Then restart the software.

If the permission error persists, check macOS System Settings → Privacy & Security → Full Disk Access and add your Terminal app or the Python interpreter used by pyVideoTrans.

#8 103.206**8 reply at 20 days ago

(base) kumarprashant@Prashants-Mac-mini pyvideotrans % rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"
(base) kumarprashant@Prashants-Mac-mini pyvideotrans % python sp.py
Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/sp.py", line 27, in

from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QMessageBox

ModuleNotFoundError: No module named 'PySide6'
(base) kumarprashant@Prashants-Mac-mini pyvideotrans % brew install openfst --build-from-source
Warning: openfst 1.8.4 is already installed and up-to-date.
To reinstall 1.8.4, run:
brew reinstall openfst

#9 DeepSeek reply at 20 days ago

You are trying to run python sp.py directly, but pyVideoTrans uses uv to manage its own virtual environment, so PySide6 is not installed in your base conda environment.

You must use uv run sp.py to launch the app correctly.

But your uv sync failed because pynini could not be compiled.

This is a dependency build issue that prevents the full environment from being created.

Fix that first.

1.

Fix pynini build (OpenFST is already installed)

Run these commands in your terminal:

export OPENFST_PREFIX="$(brew --prefix openfst)"
export CFLAGS="-I${OPENFST_PREFIX}/include"
export CPPFLAGS="-I${OPENFST_PREFIX}/include"
export LDFLAGS="-L${OPENFST_PREFIX}/lib"
export DYLD_LIBRARY_PATH="${OPENFST_PREFIX}/lib:$DYLD_LIBRARY_PATH"
cd "/Users/kumarprashant/Local Files/pyvideotrans"
uv sync

If it still fails, try reinstalling openfst from source:

brew reinstall openfst --build-from-source

Then rerun the exports and uv sync again.

2.

Start the app correctly

After uv sync completes successfully:

uv run sp.py

Do not use python sp.py.

3.

The tmp permission issue is now fixed

You already deleted the tmp folder (rm -rf .../tmp), so the earlier FFmpeg "permission denied" error should not occur.

The app will recreate tmp automatically when it starts.

If pynini still blocks you

If you don't need the specific feature that uses pynini (it is an optional text normalization library), you can try to install a precompiled wheel for Apple Silicon from
pynini releases.

But the uv sync approach with OpenFST flags should work on most setups.

#10 103.206**8 reply at 20 days ago

× Failed to build pynini==2.1.6
├─▶ The build backend returned an error
╰─▶ Call to setuptools.build_meta:__legacy__.build_wheel failed (exit status: 1)

  [stdout]
  running bdist_wheel
  running build
  running build_py
  running egg_info
  writing pynini.egg-info/PKG-INFO
  writing dependency_links to pynini.egg-info/dependency_links.txt
  writing top-level names to pynini.egg-info/top_level.txt
  reading manifest file 'pynini.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  adding license file 'LICENSE'
  adding license file 'AUTHORS'
  writing manifest file 'pynini.egg-info/SOURCES.txt'
  running build_ext
  building '_pynini' extension
  c++ -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -O3 -arch arm64
  -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC
  -I/opt/homebrew

......
ttps://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.

          ********************************************************************************

  !!
    dist._finalize_license_expression()
  /Users/kumarprashant/.cache/uv/builds-v0/.tmp7pO6xB/lib/python3.10/site-packages/setuptools/dist.py:765:
  SetuptoolsDeprecationWarning: License classifiers are deprecated.
  !!

          ********************************************************************************
          Please consider removing the following classifiers in favor of a SPDX license expression:

          License :: OSI Approved :: Apache Software License

          See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
          ********************************************************************************

  !!
    self._finalize_license_expression()
  In file included from extensions/_pynini.cpp:1354:
  In file included from /opt/homebrew/opt/openfst/include/fst/fstlib.h:57:
  /opt/homebrew/opt/openfst/include/fst/const-fst.h:403:25: warning: comparison of integers of different signs:
  'int64_t' (aka 'long long') and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    403 |     if (hdr.NumStates() != num_states) {
        |         ~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
  /opt/homebrew/opt/openfst/include/fst/const-fst.h:407:23: warning: comparison of integers of different signs:
  'int64_t' (aka 'long long') and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    407 |     if (hdr.NumArcs() != num_arcs) {
        |         ~~~~~~~~~~~~~ ^  ~~~~~~~~
  In file included from extensions/_pynini.cpp:1380:
  In file included from extensions/stringmapscript.h:31:
  extensions/stringmap.h:185:26: error: no member named 'StringJoin' in namespace 'fst'; did you mean 'StrJoin'?
    185 |                  
#11 DeepSeek reply at 20 days ago

Pynini 2.1.6 is incompatible with your installed OpenFST 1.8.4: the header renamed StringJoin to StrJoin. This is a known issue on macOS when using Homebrew’s latest OpenFST. You don’t need to downgrade OpenFST if you use a precompiled pynini wheel.

Quickest fix (recommended)

Download the pre-built pynini 2.1.6 wheel for macOS arm64 and Python 3.10 from the official pynini releases:

  1. Open this URL in your browser or use curl:
    https://github.com/kkm000/pynini/releases/download/v2.1.6/pynini-2.1.6-cp310-cp310-macosx_11_0_arm64.whl
  2. Move the wheel into your pyvideotrans folder, e.g. /Users/kumarprashant/Local Files/pyvideotrans/pynini.whl
  3. Since uv sync will still try to build pynini from source, you need to tell uv to use this wheel. Edit pyproject.toml in your project root and replace the pynini dependency line with a local path reference:

    Find the line that looks like:

    pynini==2.1.6

    And replace it with:

    pynini @ file:///Users/kumarprashant/Local Files/pyvideotrans/pynini.whl
  4. Run:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv sync

    This should now use your local precompiled wheel instead of compiling from source.

  5. Start the software with:

    uv run sp.py

    Do not use python sp.py — that won’t activate the uv virtual environment.

Alternative: skip pynini entirely (if you don’t use text normalization)

Pynini is only required for the optional “文本规范化” text normalization feature. If you don’t use that feature, you can remove it from the dependencies completely:

  1. Edit pyproject.toml and comment out or delete the line containing pynini.
  2. Run uv sync.
  3. Launch with uv run sp.py.

If the app crashes with ModuleNotFoundError: pynini, you can later install the wheel manually into the uv environment:

"/Users/kumarprashant/Local Files/pyvideotrans/.venv/bin/pip" install "/Users/kumarprashant/Local Files/pyvideotrans/pynini.whl"

Note about your earlier FFmpeg permission error

You already deleted the tmp folder with rm -rf, so that issue is fixed. The app will recreate tmp automatically when it starts. After pynini and uv sync are resolved, you should be able to run the software normally.

请查阅相关文档:

#13 DeepSeek reply at 20 days ago

The downloaded URL returns 404 because there is no prebuilt pynini wheel for macOS arm64.

That's expected—pynini does not publish wheels for this platform.

The build from source fails because your installed OpenFST 1.8.4 added a breaking API change.

You have two practical options:


Option 1 (Recommended): Remove pynini dependency

If you do not use the "文本规范化" (text normalization) feature, you can safely remove pynini and still run all core functions (video translation, subtitle transcription, dubbing, etc.).

Steps:

  1. Open pyproject.toml in /Users/kumarprashant/Local Files/pyvideotrans/
  2. Find the line that contains pynini
  3. Delete that line (or comment it out with #)
  4. Save the file
  5. In the terminal, run:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv sync
  6. Start the software with:

    uv run sp.py
Do not use python sp.py directly – it will not see the uv environment.

Option 2 (Advanced): Fix pynini compilation by downgrading OpenFST

Only needed if you must use text normalization.

This requires building an older OpenFST (1.8.3 or earlier) from source, which is time‑consuming and may still have other issues on macOS 26.

Not recommended for most users.


Reminder about the original permission error

You already deleted the tmp folder (rm -rf .../tmp), which fixes the previous FFmpeg "permission denied" error.

The software will recreate tmp automatically on start.

If you still encounter tmp write errors after removing pynini, check macOS System Settings → Privacy & Security → Full Disk Access and add your Terminal or Python interpreter.


请查阅相关文档:

#14 103.206**8 reply at 20 days ago

I have removed pynini from tomel file

× Failed to build pynini==2.1.6
├─▶ The build backend returned an error
╰─▶ Call to setuptools.build_meta:__legacy__.build_wheel failed (exit status: 1)

  [stdout]
  running bdist_wheel
  running build
  running build_py
  running egg_info
  writing pynini.egg-info/PKG-INFO
  writing dependency_links to pynini.egg-info/dependency_links.txt
  writing top-level names to pynini.egg-info/top_level.txt
  reading manifest file 'pynini.egg-info/SOURCES.txt'
  reading manifest template 'MANIFEST.in'
  adding license file 'LICENSE'
  adding license file 'AUTHORS'
  writing manifest file 'pynini.egg-info/SOURCES.txt'
  running build_ext
  building '_pynini' extension
  c++ -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -O3 -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness
  -Wno-expansion-to-defin

......

          See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
          ********************************************************************************

  !!
    dist._finalize_license_expression()
  /Users/kumarprashant/.cache/uv/builds-v0/.tmplNss9a/lib/python3.10/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
  !!

          ********************************************************************************
          Please consider removing the following classifiers in favor of a SPDX license expression:

          License :: OSI Approved :: Apache Software License

          See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
          ********************************************************************************

  !!
    self._finalize_license_expression()
  In file included from extensions/_pynini.cpp:1354:
  In file included from /opt/homebrew/opt/openfst/include/fst/fstlib.h:57:
  /opt/homebrew/opt/openfst/include/fst/const-fst.h:403:25: warning: comparison of integers of different signs: 'int64_t' (aka 'long long') and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    403 |     if (hdr.NumStates() != num_states) {
        |         ~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~
  /opt/homebrew/opt/openfst/include/fst/const-fst.h:407:23: warning: comparison of integers of different signs: 'int64_t' (aka 'long long') and 'size_t' (aka 'unsigned long') [-Wsign-compare]
    407 |     if (hdr.NumArcs() != num_arcs) {
        |         ~~~~~~~~~~~~~ ^  ~~~~~~~~
  In file included from extensions/_pynini.cpp:1380:
  In file included from extensions/stringmapscript.h:31:
  extensions/stringmap.h:185:26: error: no member named 'StringJoin' in namespace 'fst'; did you mean 'StrJoin'?
    185 |                  
#15 DeepSeek reply at 20 days ago

The log shows pynini is still being built because your pyproject.toml may still contain a reference via WeTextProcessing, or the uv.lock file still pins pynini. You must remove both pynini and WeTextProcessing from dependencies, then clear the lock file.Follow these exact steps:1. Open pyproject.toml in /Users/kumarprashant/Local Files/pyvideotrans/.2. Find and delete both lines (they are usually near line 256): - The line containing "pynini", - The line containing "WeTextProcessing",3. Delete the uv.lock file in the same directory.4. Run in terminal: bash cd "/Users/kumarprashant/Local Files/pyvideotrans" uv sync 5. Start the software with: bash uv run sp.py If uv sync still tries to build pynini, run this to force a full re-resolution:`bash
rm -rf .venv
rm -f uv.lock
uv sync

#16 103.206**8 reply at 19 days ago

I have reinstalled all the things removing the pynini and WeTextProcessing.. the application is running but getting error for video translator for voices under TTS SErvice
No audio file was generated during the listening test.:
{'text': 'नमस्ते, मेरे प्यारे दोस्त, मुझे आशा है कि आपका हर दिन सुंदर और सुखद हो!', 'rate': '+0%', 'role': 'Swara(Female/IN)', 'filename': '/var/folders/m_/dyn8g_sn6cj_546p_kj8r1g80000gn/T/pyvideotrans/0-1788976655.533777.wav', 'tts_type': 0, 'language': 'hi', 'volume': '+0%', 'pitch': '+0Hz'}
Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/ListenVoice.py", line 21, in run

tts.run(

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/tts/__init__.py", line 230, in run

return _cls(**kwargs).run()  # type:ignore

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/tts/_base.py", line 124, in run

raise self.error if isinstance(self.error, Exception) else DubbingSrtError(str(self.error))

videotrans.configure.excepts.DubbingSrtError: No audio file was generated during the listening test.

#17 DeepSeek reply at 19 days ago

The core cause is that Edge‑TTS (tts_type 0) could not reach Microsoft's servers or the voice name is not mapped correctly, so no audio bytes were returned to create the WAV file.

This is almost always a network/proxy problem on macOS, or an outdated/incorrect Edge‑TTS voice mapping.Fix steps:1.

Bypass proxy for Edge‑TTS – Create an empty file named edgetts-noproxy.txt in the software root folder (the folder where sp.py resides).

Then restart the app.2.

Test Edge‑TTS directly – In Terminal run: edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3 - If this fails with a network error: your network cannot reach Microsoft's speech servers.

Check your VPN/proxy settings, or disable system proxy temporarily.

- If this succeeds: then the issue is inside pyVideoTrans – verify the voice mapping.3.

Verify voice mapping – Open videotrans/voicejson/edge-tts.json and confirm Swara(Female/IN) maps to hi-IN-SwaraNeural.

If the entry is missing or wrong, manually add it or choose another Hindi voice (e.g., hi-IN-MadhurNeural).4.

Update edge‑tts – Run: cd "/Users/kumarprashant/Local Files/pyvideotrans" && uv sync Then start with uv run sp.py.

If the package is still old, manually install inside the venv: .venv/bin/pip install --upgrade edge-tts5.

Temporary workaround – If Edge‑TTS remains unusable, switch the TTS channel to Qwen3-TTS(内置) or OmniVoice-TTS(内置) for the listening test (both support Hindi).If none of the above resolves it, provide the latest log file from logs/ (the newest date) and copy the bottom 30 lines of error output.

#18 103.206**8 reply at 19 days ago

(base) kumarprashant@Prashants-Mac-mini pyvideotrans % edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3
zsh: command not found: edge-tts

#19 DeepSeek reply at 19 days ago

The edge-tts command is not available in your base conda environment; it is installed inside the uv‑managed virtual environment.

Use either of these commands from the project root:1.

uv run edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp32.

.venv/bin/edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3

If the test succeeds, the problem is inside pyVideoTrans (voice mapping or proxy).

If it fails with a network error, your network cannot reach Microsoft's speech servers – fix the proxy/VPN or create the file edgetts-noproxy.txt in the software root folder to bypass proxy.Then restart the app and re‑run the listening test.

#20 103.206**8 reply at 19 days ago

(base) kumarprashant@Prashants-Mac-mini pyvideotrans % uv run edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp32. .venv/bin/edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3
Uninstalled 1 package in 7ms
Installed 1 package in 6ms
usage: edge-tts [-h] [-t TEXT] [-f FILE] [-v VOICE] [-l] [--rate RATE] [--volume VOLUME] [--pitch PITCH]

            [--write-media WRITE_MEDIA] [--write-subtitles WRITE_SUBTITLES] [--proxy PROXY] [--version]

edge-tts: error: unrecognized arguments: .venv/bin/edge-tts

#21 DeepSeek reply at 19 days ago

The error is because you pasted two separate commands onto one line.

The first command uv run edge-tts ... picked up the rest of the second command as its arguments, causing the "unrecognized arguments" error.

Run only the first command alone:

uv run edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3

After running that, check:

  • If it fails with a network error (e.g., connection refused, timeout, 403): your network cannot reach Microsoft's speech servers.

    Create an empty file named edgetts-noproxy.txt in the software root folder (where sp.py is), then restart the app and retry the listening test.

    If you have a VPN/proxy, ensure it is not blocking the connection.
  • If it succeeds: the problem is inside pyVideoTrans.

    Verify the voice mapping in videotrans/voicejson/edge-tts.json – Swara(Female/IN) must map to hi-IN-SwaraNeural.

    If the entry is wrong or missing, correct it or use another Hindi voice (e.g., hi-IN-MadhurNeural).

Then restart the app with uv run sp.py and try the listening test again.

#22 103.206**8 reply at 19 days ago

(base) kumarprashant@Prashants-Mac-mini pyvideotrans % uv run edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3
Uninstalled 1 package in 3ms
Installed 1 package in 2ms

#23 DeepSeek reply at 19 days ago

The direct test may have succeeded but produced no visible output.

Verify whether the audio file was actually created:ls -la /tmp/test.mp3If the file exists, the network connection to Microsoft is working and Edge‑TTS itself is fine.

The error you see inside pyVideoTrans is then caused by one of the following:1.

Wrong voice mapping in videotrans/voicejson/edge-tts.json – Swara(Female/IN) may not map to hi-IN-SwaraNeural.

Open that file and confirm the entry.

If missing or wrong, correct it or choose another Hindi voice.2.

Proxy interference – Even if the terminal test works, the software may be using a proxy that blocks Edge‑TTS.

Create an empty file named edgetts-noproxy.txt in the software root folder (where sp.py resides) and restart the app.3.

Outdated edge-tts library – Run: cd "/Users/kumarprashant/Local Files/pyvideotrans" && uv sync Then launch with uv run sp.py and retry.If /tmp/test.mp3 does not exist, the test failed.

Run it again and capture the full error output:uv run edge-tts --voice hi-IN-SwaraNeural --text "नमस्ते" --write-media /tmp/test.mp3 2>&1If it shows a network error (timeout, 403, connection refused), fix your network or proxy settings, or create edgetts-noproxy.txt to bypass the proxy.请查阅相关文档:
Edge-TTS
常见问题FAQ

#24 103.206**8 reply at 19 days ago

warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
set cursor...
preload TTS win...
preload STT win...
preload translate srt win...
end
[WARNING] 测试硬件编码器时失败:写入 /Users/kumarprashant/Local Files/pyvideotrans/tmp/22366/test_h264_videotoolbox_1788977015637.mp4 时权限被拒绝。 command=['ffmpeg', '-y', '-hide_banner', '-t', '1', '-i', '/Users/kumarprashant/Local Files/pyvideotrans/videotrans/styles/no-remove.mp4', '-c:v', 'h264_videotoolbox', '-f', 'mp4', '/Users/kumarprashant/Local Files/pyvideotrans/tmp/22366/test_h264_videotoolbox_1788977015637.mp4']
[WARNING] 测试硬件编码器时失败:写入 /Users/kumarprashant/Local Files/pyvideotrans/tmp/22366/test_hevc_videotoolbox_1788977015645.mp4 时权限被拒绝。 command=['ffmpeg', '-y', '-hide_banner', '-t', '1', '-i', '/Users/kumarprashant/Local Files/pyvideotrans/videotrans/styles/no-remove.mp4', '-c:v', 'hevc_videotoolbox', '-f', 'mp4', '/Users/kumarprashant/Local Files/pyvideotrans/tmp/22366/test_hevc_videotoolbox_1788977015645.mp4']
[ERROR] 执行 ffmpeg 时发生未知错误,cmd=['ffmpeg', '-hide_banner', '-nostdin', '-ignore_unknown', '-threads', '0', '-y', '-i', '/var/folders/m_/dyn8g_sn6cj_546p_kj8r1g80000gn/T/pyvideotrans/0-1788977172.294623.wav.mp3', '-ar', '48000', '-ac', '2', '-c:a', 'pcm_s16le', '/var/folders/m_/dyn8g_sn6cj_546p_kj8r1g80000gn/T/pyvideotrans/0-1788977172.294623.wav']:
[Errno 13] Permission denied: 'ffmpeg'
[ERROR] 转为 48k wav时失败,跳过[Errno 13] Permission denied: 'ffmpeg'
Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/configure/base.py", line 117, in convert_to_wav

runffmpeg(cmd, force_cpu=True)

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/_ffmpeg_runner.py", line 49, in runffmpeg

subprocess.run(

File "/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 503, in run

with Popen(*popenargs, **kwargs) as process:

File "/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 971, in init

self._execute_child(args, executable, preexec_fn, close_fds,

File "/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 1863, in _execute_child

raise child_exception_type(errno_num, err_msg, err_filename)

PermissionError: [Errno 13] Permission denied: 'ffmpeg'

#25 DeepSeek reply at 19 days ago

根因:源码部署模式下,pyVideoTrans 需要系统能直接调用 ffmpeg 可执行文件。你的环境当前无法找到并执行 ffmpeg,导致 subprocess 报 “Permission denied: 'ffmpeg'”。另一个 tmp 目录写入权限被拒绝的问题,说明 tmp 文件夹或其父目录没有你的写入权限。

解决步骤:

  1. 安装/检查 ffmpeg
    打开终端,执行:

    brew install ffmpeg
    which ffmpeg
    ls -l $(which ffmpeg)
    • 如果 which ffmpeg 没有任何输出,说明未安装,执行 brew install ffmpeg。
    • 如果输出路径但 ls -l 显示没有执行权限(缺少 x),执行:

      chmod +x $(which ffmpeg)
  2. 确认 ffmpeg 所在目录在 PATH 中
    执行 echo $PATH。
    如果 ffmpeg 位于 /opt/homebrew/bin(Apple Silicon)或 /usr/local/bin(Intel),但 PATH 中没有该目录,需要临时添加:

    export PATH="/opt/homebrew/bin:$PATH"   # Apple Silicon
    export PATH="/usr/local/bin:$PATH"      # Intel

    然后再次尝试启动。

  3. 修复 tmp 目录权限
    删除旧的 tmp 目录并重置整个软件目录的写权限:

    rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"
    chmod -R u+rwX "/Users/kumarprashant/Local Files/pyvideotrans"
  4. 重新启动程序
    必须从终端运行,不要双击 sp.py,以确保继承正确的 PATH 环境:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv run sp.py
  5. 如果仍然失败

    • 检查 macOS 隐私权限:系统设置 → 隐私与安全性 → 完全磁盘访问权限,将“终端”或你的 Python 解释器加入允许列表。
    • 确认你已经删除了 pynini 和 WeTextProcessing 依赖后,执行过 uv sync,且启动命令是 uv run sp.py,而不是 python sp.py。

请查阅相关文档:

#26 103.206**8 reply at 19 days ago

please reply in English.

I don't know chinies

#27 DeepSeek reply at 19 days ago

Root cause: ffmpeg is not found or not executable on your system, and the tmp/ directory lacks write permissions. The software tries to call ffmpeg via subprocess but fails with Permission denied: 'ffmpeg'.

Steps to fix:

  1. Install/verify ffmpeg:

    • Run in Terminal: brew install ffmpeg
    • Then check: which ffmpeg
    • If it exists but has no execute permission, run: chmod +x $(which ffmpeg)
  2. Ensure the ffmpeg directory is in your PATH:

    • For Apple Silicon: export PATH="/opt/homebrew/bin:$PATH"
    • For Intel: export PATH="/usr/local/bin:$PATH"
      This change must be applied in the same terminal before launching the app.
  3. Fix the tmp directory permissions:

    • Delete the broken tmp folder: rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"
    • Grant write permissions to the project folder: chmod -R u+rwX "/Users/kumarprashant/Local Files/pyvideotrans"
  4. Launch the app from the terminal (do not double-click sp.py), so it inherits the correct PATH:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv run sp.py
  5. If the permission error persists, go to macOS System Settings → Privacy & Security → Full Disk Access and add your Terminal app or Python interpreter to the allowed list.

Note: Do not use python sp.py directly – the software must be started with uv run sp.py so it uses the virtual environment correctly.

Relevant Documentation:

#28 103.206**8 reply at 19 days ago

awesome .

it worked

#29 DeepSeek reply at 19 days ago

Great! The issue is resolved.

If you encounter any other errors, provide the latest log file from logs/ and I'll help you analyze them.

#30 103.206**8 reply at 19 days ago

Now help me with the video.

My video is having the story mode, which is in English.

which I want to convert into Hindi.

How and what to do.

#31 DeepSeek reply at 19 days ago

To convert your English story video into Hindi, use the main interface (which opens by default as "翻译视频" / Video Translation). Follow these steps:

1. Select your video
Click the top-left button "选择音频或视频" (Select audio or video) and pick your English story video. It supports mp4/mkv/avi/mov etc. If you have multiple videos, you can select them all for batch processing.

2. Speech recognition (ASR)
In the "语音识别" (Speech Recognition) row, choose the channel and model:

  • Recommended: faster-whisper(内置) with model large-v3-turbo (or large-v3 for higher accuracy but slower).
  • For English video, this default is fine. If you have a strong GPU (NVIDIA + CUDA), check the "启动CUDA加速" box to speed up.

3. Translation
In the "翻译字幕" (Translate Subtitles) row:

  • Translation channel: Google(免费) (works well, but in mainland China you need a VPN; on macOS you likely have direct access) or DeepSeek / OpenAI for better quality.
  • Source language (发音语言): select English (en).
  • Target language (目标语言): select Hindi (hi).

4. Dubbing (TTS)
In the "字幕配音" (Dubbing) row:

  • Dubbing channel: Edge-TTS(免费) – it supports Hindi and is free.
  • Voice role: Choose a Hindi voice. For example:

    • Madhur(Male/IN) (male)
    • Swara(Female/IN) (female)
  • If you want to clone the original English speaker's voice into Hindi, select clone (available only in video translation). But this requires a channel that supports voice cloning (e.g., Qwen3-TTS, OmniVoice-TTS) and extra configuration. For simple conversion, use Edge-TTS.

5. Sync alignment
In the "同步对齐" (Alignment) row:

  • Keep 配音加速 (Audio acceleration) checked by default. This ensures the Hindi dubbing fits the original video duration.
  • 字幕嵌入类型 (Subtitle embedding): Choose 嵌入软字幕 (soft subtitles) to make subtitles toggleable, or 嵌入硬字幕 (hard subtitles) to burn them into the picture.

6. Optional: improve quality with "设置更多参数"
Click the "设置更多参数.." button and consider:

  • Check 分离人声背景声 (Separate vocal/instrumental) and 重新嵌入背景声 (Re-embed background) if your story video has background music or effects. This improves ASR accuracy and preserves the original background sound.
  • If you want the final video to show both English and Hindi subtitles, choose 嵌入硬字幕(双语) or 嵌入软字幕(双语).

7. Start execution
Click the bottom "开始执行" button. The progress bar shows the status. When done, the final video is saved to _video_out folder next to your source video (or the folder you specified).

Important notes:

  • If your video has only background music but no clear speech, the software cannot translate it. It needs human voice.
  • The process takes time: ASR + translation + dubbing + alignment. The first use may download models (several GB), which can take long.
  • Do not use python sp.py to launch; use uv run sp.py so the environment is correct (as you did before).

Relevant documents:

#32 103.206**8 reply at 19 days ago

Error during final step of subtitle/TTS embedding: Filter not found
Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 432, in _subprocess

subprocess.run(

File "/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 526, in run

raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['ffmpeg', '-nostdin', '-y', '-progress', 'compose1788979857.831251.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-filter_complex', "[0:v]subtitles=filename='end.ass'[v_out]", '-map', '[v_out]', '-map', '1:a', '-c:v', 'h264_videotoolbox', '-c:a', 'copy', '-q:v', '67', '-movflags', '+faststart', '-fps_mode', 'vfr', '-shortest', 'laste_target.mp4']' returned non-zero exit status 8.

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

Traceback (most recent call last):
File "/Users/kumarprashant
......
c:v', 'libx264', '-c:a', 'copy', '-crf', '23', '-preset', 'slow', '-movflags', '+faststart', '-fps_mode', 'vfr', '-shortest', 'laste_target.mp4']' returned non-zero exit status 8.

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

Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 286, in _join_video_audio_srt

runffmpeg(cmd0 + cmd1 + subtitle_filter + cmd2 + enc_qua + cmd3,

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/_ffmpeg_runner.py", line 78, in runffmpeg

raise FFmpegError(err) from e

videotrans.configure.excepts.FFmpegError: : Filter not found

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

Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/only_one.py", line 164, in run

trk.assembling()

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 26, in assembling

self._join_video_audio_srt()

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 289, in _join_video_audio_srt

raise VideoTransError(tr('Error in embedding the final step of the subtitle dubbing')+str(e)) from e

videotrans.configure.excepts.VideoTransError: Error during final step of subtitle/TTS embedding: Filter not found

cfg=[TaskCfgVTT]当前工作模式: 翻译视频 单视频模式
原始输入文件名: /Volumes/Extreme SSD/OBS Recordings/got30.mp4,
输出结果保存到文件夹: /Volumes/Extreme SSD/OBS Recordings/_video_out/got30-mp4,
临时文件夹: /Users/kumarprashant/Local Files/pyvideotrans/tmp/22708/243dcdc5f2
已选 清理已存在
未启用CUDA加速
未选 降噪
STT Service:faster-whisper(Built-in), large-v3-turbo, 发音语言: English, 断句方式:默认断句
TranslateSrt:Google Translate (Free),原始语言:English,目标语言:Hindi, 已选 SendSRT
TTS Service:Edge-TTS (Free), 角色:Madhur(Male/IN), 配音语言:Hindi, 未选 二次语音识别
音量:+0%, 语速:+0%, 已选 音频加速, 已选 视频慢速
字幕: Hard Subtitles

reply in english

#33 DeepSeek reply at 19 days ago

The error Filter not found during the final muxing step is because the ffmpeg binary on your macOS system does not include the subtitles filter (which requires libass).

pyVideoTrans calls your system ffmpeg, and that build is missing libass support.

Steps to fix:

  1. Check whether your ffmpeg supports subtitles:

    ffmpeg -filters | grep subtitles
    ffmpeg -version | grep libass

    If the output is empty, libass is missing.

  2. Reinstall ffmpeg via Homebrew (which includes libass by default):

    brew reinstall ffmpeg

    Then verify again:

    ffmpeg -filters | grep subtitles
  3. Launch pyVideoTrans from a fresh terminal so it picks up the corrected PATH:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv run sp.py

    Make sure your terminal’s PATH includes /opt/homebrew/bin (Apple Silicon).

  4. Retry the video translation.

If you cannot fix ffmpeg right now, a temporary workaround is to choose 嵌入软字幕 (soft subtitles) instead of hard subtitles.

Soft subtitles do not use the subtitles filter – they are muxed as a separate stream and should succeed even without libass.

However, if you want the subtitles burned into the picture permanently, you must fix the ffmpeg / libass issue.

Note: The earlier tmp permission errors are now fixed, but if they reappear, repeat:

rm -rf "/Users/kumarprashant/Local Files/pyvideotrans/tmp"
chmod -R u+rwX "/Users/kumarprashant/Local Files/pyvideotrans"

After reinstalling ffmpeg, if you still see Filter not found, please run:

ffmpeg -filters 2>&1 | grep -E "subtitles|ass"

and share the output.

#34 103.206**8 reply at 19 days ago

ffmpeg-full includes additional tools and libraries that are not included in the regular ffmpeg formula.
(base) kumarprashant@Prashants-Mac-mini pyvideotrans % ffmpeg -filters | grep subtitles
ffmpeg version 9.0.1 Copyright (c) 2000-2026 the FFmpeg developers
built with Apple clang version 21.0.0 (clang-2100.1.1.101)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/9.0.1_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libsvtav1 --enable-libopus --enable-libx264 --enable-libmp3lame --enable-libdav1d --enable-libvmaf --enable-libvpx --enable-libx265 --enable-openssl --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil 61. 1.101 / 61. 1.101
libavcodec 63. 1.101 / 63. 1.101
libavformat 63. 1.101 / 63. 1.101
libavdevice 63. 1.101 / 63. 1.101
libavfilter 12. 1.101 / 12. 1.101
libswscale 10. 1.101 / 10. 1.101
libswresample 7. 1.101 / 7. 1.101

#35 DeepSeek reply at 19 days ago

The root cause is that your current Homebrew ffmpeg build does not include the subtitles filter (libass missing).

That's why the final muxing step fails with "Filter not found".

In the configuration output you pasted, there is no --enable-libass and no subtitles filter in the list.

Only the ffmpeg-full version from the homebrew-ffmpeg tap includes libass and the subtitles filter.

The regular ffmpeg formula does not.

Follow these steps to fix it:

  1. Uninstall the current ffmpeg (ignore dependencies to avoid breaking other packages):

    brew uninstall --ignore-dependencies ffmpeg
  2. Add the homebrew-ffmpeg tap (if not already added):

    brew tap homebrew-ffmpeg/ffmpeg
  3. Install the full version:

    brew install homebrew-ffmpeg/ffmpeg/ffmpeg
  4. Verify that the subtitles filter is now available:

    ffmpeg -filters | grep subtitles

    You should see a line containing subtitles (and likely ass).

  5. Restart pyVideoTrans from the terminal so it picks up the new ffmpeg:

    cd "/Users/kumarprashant/Local Files/pyvideotrans"
    uv run sp.py
  6. Retry the translation.

    The final muxing step should now work.

If the installation fails (e.g., due to missing Xcode command line tools), run:

xcode-select --install

then retry step 3.

Please consult relevant documentation:

#36 103.206**8 reply at 19 days ago

[AVFilterGraph @ 0x7bac0c380] No such filter: 'subtitles'
Error : Filter not found

,Command '['ffmpeg', '-nostdin', '-y', '-progress', 'compose1788979857.831251.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-filter_complex', "[0:v]subtitles=filename='end.ass'[v_out]", '-map', '[v_out]', '-map', '1:a', '-c:v', 'h264_videotoolbox', '-c:a', 'copy', '-q:v', '67', '-movflags', '+faststart', '-fps_mode', 'vfr', '-shortest', 'laste_target.mp4']' returned non-zero exit status 8.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/_ffmpeg_runner.py", line 49, in runffmpeg

subprocess.run(

File "/Users/kumarprashant/.local/share/uv/python/cpython-3.10.19-macos-aarch64-none/lib/python3.10/subprocess.py", line 526, in run

raise CalledProcessError(retcode, process.args,

subprocess.CalledProcessError: Command '['ffmpeg', '-hide_banner', '-nostdin', '-ignore_unknown', '-threads', '0', '-y', '-progress', 'compose1788979857.831251.txt', '-i', 'novoice.mp4', '-i', 'will_embed.m4a', '-filter_complex', "[0:v]subtitles=filename='end.ass'[v_out]", '-map', '[v_out]', '-map', '1:a', '-c:v', 'libx264', '-c:a', 'copy', '-crf', '23', '-preset', 'slow', '-movflags', '+faststart', '-fps_mode', 'vfr', '-shortest', 'laste_target.mp4']' returned non-zero exit status 8.

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

Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 286, in _join_video_audio_srt

runffmpeg(cmd0 + cmd1 + subtitle_filter + cmd2 + enc_qua + cmd3,

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/util/_ffmpeg_runner.py", line 78, in runffmpeg

raise FFmpegError(err) from e

videotrans.configure.excepts.FFmpegError: : Filter not found

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

Traceback (most recent call last):
File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/only_one.py", line 164, in run

trk.assembling()

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 26, in assembling

self._join_video_audio_srt()

File "/Users/kumarprashant/Local Files/pyvideotrans/videotrans/task/_stage_assemble.py", line 289, in _join_video_audio_srt

raise VideoTransError(tr('Error in embedding the final step of the subtitle dubbing')+str(e)) from e

videotrans.configure.excepts.VideoTransError: Error during final step of subtitle/TTS embedding: Filter not found

#37 DeepSeek reply at 19 days ago

The subtitles filter is still missing from your ffmpeg build. The ffmpeg -filters output you shared earlier did not include lines for subtitles or ass. That means the full tap installation did not take effect, or your system is still using the regular ffmpeg formula without libass.

Verify what you actually have installed:

brew list | grep ffmpeg
which ffmpeg
ffmpeg -filters 2>&1 | grep -E "subtitles|ass"

If brew list shows both ffmpeg and homebrew-ffmpeg/ffmpeg/ffmpeg, you have two competing installs. The one currently in PATH is likely the broken regular one. Fix it with:

brew unlink ffmpeg
brew link homebrew-ffmpeg/ffmpeg/ffmpeg --overwrite

If brew list shows only ffmpeg (the regular one), the full tap installation failed or was never completed. Do this in order:

brew uninstall --ignore-dependencies ffmpeg
brew tap homebrew-ffmpeg/ffmpeg
brew install homebrew-ffmpeg/ffmpeg/ffmpeg

After that, open a new terminal and run:

ffmpeg -filters 2>&1 | grep subtitles

If you see a line like ... subtitles ..., the filter is now available. Then launch the app from that same terminal:

cd "/Users/kumarprashant/Local Files/pyvideotrans"
uv run sp.py

Immediate workaround (if you can’t fix ffmpeg right now)

The subtitles filter is only needed when burning hard subtitles into the video. You can avoid it entirely by switching to soft subtitles.

In the translation interface, change the option 字幕嵌入类型 (Subtitle embedding type) to:

  • 嵌入软字幕 (Embed soft subtitles)

This will mux the subtitle as a separate track instead of using the filter. The subtitles remain viewable in most players and can be toggled on/off. The video will complete without the Filter not found error.

⚠️ Note: Soft subtitles will not be visible in web‑based players. If you need permanent on‑screen subtitles for web playback, you must still install the correct ffmpeg with libass support as outlined above.

Please consult relevant documentation:
MacOSX/Linux Installation
Common Troubleshooting FAQ

Thinking...
Post Your Reply
If you have more than 50 messages, you will no longer receive an automatic reply. Please ask a new question!
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 via ko-fi.com

Related resource