mirror of
https://github.com/chidiwilliams/buzz.git
synced 2026-03-14 22:55:46 +01:00
491 add mms (#1313)
This commit is contained in:
parent
7af79b6bc3
commit
4dbde2b948
39 changed files with 2049 additions and 888 deletions
|
|
@ -7,6 +7,10 @@ import sys
|
|||
from pathlib import Path
|
||||
from typing import TextIO
|
||||
|
||||
# Set up CUDA library paths before any torch imports
|
||||
# This must happen before platformdirs or any other imports that might indirectly load torch
|
||||
import buzz.cuda_setup # noqa: F401
|
||||
|
||||
from platformdirs import user_log_dir, user_cache_dir, user_data_dir
|
||||
|
||||
# Will download all Huggingface data to the app cache directory
|
||||
|
|
|
|||
133
buzz/cuda_setup.py
Normal file
133
buzz/cuda_setup.py
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
"""
|
||||
CUDA library path setup for nvidia packages installed via pip.
|
||||
|
||||
This module must be imported BEFORE any torch or CUDA-dependent libraries are imported.
|
||||
It handles locating and loading CUDA libraries (cuDNN, cuBLAS, etc.) from the nvidia
|
||||
pip packages.
|
||||
|
||||
On Windows: Uses os.add_dll_directory() to add library paths
|
||||
On Linux: Uses ctypes to preload libraries (LD_LIBRARY_PATH is read at process start)
|
||||
On macOS: No action needed (CUDA not supported)
|
||||
"""
|
||||
|
||||
import ctypes
|
||||
import logging
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _get_nvidia_package_lib_dirs() -> list[Path]:
|
||||
"""Find all nvidia package library directories in site-packages."""
|
||||
lib_dirs = []
|
||||
|
||||
# Find site-packages directories
|
||||
site_packages_dirs = []
|
||||
for path in sys.path:
|
||||
if "site-packages" in path:
|
||||
site_packages_dirs.append(Path(path))
|
||||
|
||||
# Also check relative to the current module for frozen apps
|
||||
if getattr(sys, "frozen", False):
|
||||
# For frozen apps, check the _internal directory
|
||||
frozen_lib_dir = Path(sys._MEIPASS) if hasattr(sys, "_MEIPASS") else Path(sys.executable).parent
|
||||
nvidia_dir = frozen_lib_dir / "nvidia"
|
||||
if nvidia_dir.exists():
|
||||
for pkg_dir in nvidia_dir.iterdir():
|
||||
if pkg_dir.is_dir():
|
||||
lib_subdir = pkg_dir / "lib"
|
||||
if lib_subdir.exists():
|
||||
lib_dirs.append(lib_subdir)
|
||||
# Some packages have bin directory on Windows
|
||||
bin_subdir = pkg_dir / "bin"
|
||||
if bin_subdir.exists():
|
||||
lib_dirs.append(bin_subdir)
|
||||
|
||||
# Check each site-packages for nvidia packages
|
||||
for sp_dir in site_packages_dirs:
|
||||
nvidia_dir = sp_dir / "nvidia"
|
||||
if nvidia_dir.exists():
|
||||
for pkg_dir in nvidia_dir.iterdir():
|
||||
if pkg_dir.is_dir():
|
||||
lib_subdir = pkg_dir / "lib"
|
||||
if lib_subdir.exists():
|
||||
lib_dirs.append(lib_subdir)
|
||||
# Some packages have bin directory on Windows
|
||||
bin_subdir = pkg_dir / "bin"
|
||||
if bin_subdir.exists():
|
||||
lib_dirs.append(bin_subdir)
|
||||
|
||||
return lib_dirs
|
||||
|
||||
|
||||
def _setup_windows_dll_directories():
|
||||
"""Add nvidia library directories to Windows DLL search path."""
|
||||
lib_dirs = _get_nvidia_package_lib_dirs()
|
||||
for lib_dir in lib_dirs:
|
||||
try:
|
||||
os.add_dll_directory(str(lib_dir))
|
||||
logger.debug(f"Added DLL directory: {lib_dir}")
|
||||
except (OSError, AttributeError) as e:
|
||||
logger.debug(f"Could not add DLL directory {lib_dir}: {e}")
|
||||
|
||||
|
||||
def _preload_linux_libraries():
|
||||
"""Preload CUDA libraries on Linux using ctypes.
|
||||
|
||||
On Linux, LD_LIBRARY_PATH is only read at process start, so we need to
|
||||
manually load the libraries using ctypes before torch tries to load them.
|
||||
"""
|
||||
lib_dirs = _get_nvidia_package_lib_dirs()
|
||||
|
||||
# Libraries to skip - NVBLAS requires special configuration and causes issues
|
||||
skip_patterns = ["libnvblas"]
|
||||
|
||||
loaded_libs = set()
|
||||
|
||||
for lib_dir in lib_dirs:
|
||||
if not lib_dir.exists():
|
||||
continue
|
||||
|
||||
# Find all .so files in the directory
|
||||
for lib_file in sorted(lib_dir.glob("*.so*")):
|
||||
if lib_file.name in loaded_libs:
|
||||
continue
|
||||
if lib_file.is_symlink() and not lib_file.exists():
|
||||
continue
|
||||
|
||||
# Skip problematic libraries
|
||||
if any(pattern in lib_file.name for pattern in skip_patterns):
|
||||
logger.debug(f"Skipping library: {lib_file}")
|
||||
continue
|
||||
|
||||
try:
|
||||
# Use RTLD_GLOBAL so symbols are available to other libraries
|
||||
ctypes.CDLL(str(lib_file), mode=ctypes.RTLD_GLOBAL)
|
||||
loaded_libs.add(lib_file.name)
|
||||
logger.debug(f"Preloaded library: {lib_file}")
|
||||
except OSError as e:
|
||||
# Some libraries may have missing dependencies, that's ok
|
||||
logger.debug(f"Could not preload {lib_file}: {e}")
|
||||
|
||||
|
||||
def setup_cuda_libraries():
|
||||
"""Set up CUDA library paths for the current platform.
|
||||
|
||||
This function should be called as early as possible, before any torch
|
||||
or CUDA-dependent libraries are imported.
|
||||
"""
|
||||
system = platform.system()
|
||||
|
||||
if system == "Windows":
|
||||
_setup_windows_dll_directories()
|
||||
elif system == "Linux":
|
||||
_preload_linux_libraries()
|
||||
# macOS doesn't have CUDA support, so nothing to do
|
||||
|
||||
|
||||
# Auto-run setup when this module is imported
|
||||
setup_cuda_libraries()
|
||||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: buzz\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-10-17 07:59+0200\n"
|
||||
"Last-Translator: Éric Duarte <contacto@ericdq.com>\n"
|
||||
"Language-Team: Catalan <jmas@softcatala.org>\n"
|
||||
|
|
@ -176,25 +176,39 @@ msgid "Live recording mode"
|
|||
msgstr "Mode d'enregistrament en directe"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr "Utilitza només la CPU i desactiveu l'acceleració de la GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
"Establiu això si els models més grans no s'ajusten a la memòria de la GPU i "
|
||||
"Buzz es bloqueja"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr "Desactiva la GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "Prova de clau OpenAI API"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -202,11 +216,11 @@ msgstr ""
|
|||
"La vostra clau API és vàlida. Buzz utilitzarà aquesta clau per realitzar "
|
||||
"transcripcions de l'API de Whisper i traduccions de la IA."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Clau API no vàlida"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -214,11 +228,11 @@ msgstr ""
|
|||
"L'API només admet caràcters base64 (A-Za-z0-9+/).-). Altres caràcters de la "
|
||||
"clau API poden causar errors."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Selecciona la carpeta d'exportació"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -316,8 +330,8 @@ msgstr "Descàrrega fallida"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
|
|
@ -335,28 +349,40 @@ msgstr "Atura"
|
|||
msgid "Detect Language"
|
||||
msgstr "Detecta l'idioma"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Executa"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Model:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
"L'ús per primera vegada d'un model pot trigar diversos minuts a carregar-se."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Clau API:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Tasca:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
|
|
@ -601,13 +627,13 @@ msgid "End"
|
|||
msgstr "Finalitza"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -617,7 +643,7 @@ msgstr "Traducció"
|
|||
msgid "View"
|
||||
msgstr "Veure"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Marqua de temps"
|
||||
|
||||
|
|
@ -625,65 +651,65 @@ msgstr "Marqua de temps"
|
|||
msgid "Export"
|
||||
msgstr "Exporta"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Traduir"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Redimensionar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr "Cerca"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr "Mostra/amaga la barra de cerca (Ctrl+F)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr "Cerca:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr "Introduïu el text a cercar..."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr "Coincidència anterior (Maj+Retorn)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
#, fuzzy
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr "Coincidència següent (retorn)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr "Neteja"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr "Controls de reproducció:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr "Segment de bucle"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr "Activa/desactiva el bucle en fer clic als segments de transcripció"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr "Segueix l'àudio"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
|
|
@ -691,44 +717,44 @@ msgstr ""
|
|||
"Activa/desactiva seguint la posició d'àudio actual a la transcripció. Quan "
|
||||
"està activada, es desplaça automàticament al text actual."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr "Desplaça't fins a l'actual"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr "Desplaçar-se fins al text que es parla actualment"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr "1 de més de 100 coincidències"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr "1 de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr " coincidències"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr "No s'ha trobat cap coincidència"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr " de més de 100 coincidències"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr " de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Clau API necessària"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Introduïu la clau API d'OpenAI a les preferències"
|
||||
|
||||
|
|
@ -888,14 +914,14 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "No s'ha pogut desar la clau OpenAI API a l'anell de claus"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
"El servidor Whisper no s'ha pogut iniciar. Consulteu els registres per "
|
||||
"obtenir més informació."
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1269,15 +1295,15 @@ msgstr "Sundanès"
|
|||
msgid "Cantonese"
|
||||
msgstr "Cantonès"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "S'ha produït un error de connexió"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr "Començant Whisper.cpp..."
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Cancel·la la transcripció"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Ole Guldberg2 <xalt7x.service@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -176,23 +176,37 @@ msgid "Live recording mode"
|
|||
msgstr "Live optagelsesmode"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "OpenAI API Nøgle test"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -200,12 +214,12 @@ msgstr ""
|
|||
"Din API nøgle er gyldig. Buzz vil benytte nøglen til at anvende Whisper API "
|
||||
"transkription og AI oversættelser."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
#, fuzzy
|
||||
msgid "Invalid API key"
|
||||
msgstr "Ugyldig API-nøgle"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -213,11 +227,11 @@ msgstr ""
|
|||
"API supporterer kun base64 tegn (A-Za-z0-9+/=_-). Andre tegn i API-nøglen "
|
||||
"kan guve fejl. "
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Vælg eksport-mappe"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -315,8 +329,8 @@ msgstr "Download mislykkedes"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
|
|
@ -334,27 +348,39 @@ msgstr "Stop"
|
|||
msgid "Detect Language"
|
||||
msgstr "Detekter sprog"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Kør"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Model:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr "Først gang kan brug af en model tage flere minutter at indlæse."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "API-nøgle:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Opgave:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Sprog:"
|
||||
|
||||
|
|
@ -598,13 +624,13 @@ msgid "End"
|
|||
msgstr "Slut"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -614,7 +640,7 @@ msgstr "Oversættelse"
|
|||
msgid "View"
|
||||
msgstr "Vis"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Tidsstempler"
|
||||
|
||||
|
|
@ -622,107 +648,107 @@ msgstr "Tidsstempler"
|
|||
msgid "Export"
|
||||
msgstr "Eksporter"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Oversæt"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Behandel størrelse"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "API-nøgle påkrævet"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Indtast venligst OpenAI API-nøgle i indstillinger"
|
||||
|
||||
|
|
@ -882,12 +908,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "Kan ikke gemme OpenAI API-nøgle i nøgleringen"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1259,15 +1285,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Der er opstået en forbindelsesfejl"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Afbryd transkription"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-03-05 14:41+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -176,23 +176,37 @@ msgid "Live recording mode"
|
|||
msgstr "Live-Aufnahmemodus"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "OpenAI-API-Schlüssel Test"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -200,11 +214,11 @@ msgstr ""
|
|||
"Ihr API-Schlüssel ist gültig. Buzz verwendet diesen Schlüssel, um Whisper-"
|
||||
"API-Transkriptionen und KI-Übersetzungen durchzuführen."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Ungültiger API-Schlüssel"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -212,11 +226,11 @@ msgstr ""
|
|||
"Die API unterstützt nur Base64-Zeichen (A-Za-z0-9+/=_-). Andere Zeichen im "
|
||||
"API-Schlüssel können Fehler verursachen."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Exportordner auswählen"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -315,8 +329,8 @@ msgstr "Der Download ist fehlgeschlagen"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
|
|
@ -334,29 +348,41 @@ msgstr "Stoppen"
|
|||
msgid "Detect Language"
|
||||
msgstr "Sprache erkennen"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Ausführen"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Modell:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
"Bei der ersten Verwendung eines Modells kann das Laden mehrere Minuten "
|
||||
"dauern."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "API-Schlüssel:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Aufgabe:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Sprache:"
|
||||
|
||||
|
|
@ -599,13 +625,13 @@ msgid "End"
|
|||
msgstr "Ende"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -615,7 +641,7 @@ msgstr "Übersetzung"
|
|||
msgid "View"
|
||||
msgstr "Anzeigen"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Zeitstempel"
|
||||
|
||||
|
|
@ -623,107 +649,107 @@ msgstr "Zeitstempel"
|
|||
msgid "Export"
|
||||
msgstr "Export"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Übersetzen"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Größe ändern"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "API-Schlüssel erforderlich"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Bitte geben Sie den OpenAI-API-Schlüssel in den Einstellungen ein"
|
||||
|
||||
|
|
@ -884,12 +910,12 @@ msgstr ""
|
|||
"Der OpenAI-API-Schlüssel kann nicht im Schlüsselbund gespeichert werden"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1261,15 +1287,15 @@ msgstr "Sundanesisch"
|
|||
msgid "Cantonese"
|
||||
msgstr "Kantonesisch"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Ein Verbindungsfehler ist aufgetreten"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Transkription abbrechen"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
|
@ -175,43 +175,57 @@ msgid "Live recording mode"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -306,8 +320,8 @@ msgstr ""
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -325,27 +339,39 @@ msgstr ""
|
|||
msgid "Detect Language"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -582,13 +608,13 @@ msgid "End"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -598,7 +624,7 @@ msgstr ""
|
|||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -606,107 +632,107 @@ msgstr ""
|
|||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -862,12 +888,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1238,15 +1264,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
msgid "Starting transcription..."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-09-08 12:43+0200\n"
|
||||
"Last-Translator: Éric Duarte <contacto@ericdq.com>\n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -178,25 +178,39 @@ msgid "Live recording mode"
|
|||
msgstr "Modo de grabación en directo"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr "Usa solo CPU y desactiva la aceleración de GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
"Configure esto si los modelos más grandes no se ajustan a la memoria de su "
|
||||
"GPU y Buzz se bloquea"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr "Desactivar GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "Prueba de la clave API de OpenAI"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -204,11 +218,11 @@ msgstr ""
|
|||
"Tu clave API es válida. Buzz usará esta clave para realizar transcripciones "
|
||||
"de la API de Whisper y traducciones de IA."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Clave API no válida"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -216,11 +230,11 @@ msgstr ""
|
|||
"La API solo admite caracteres base64 (A-Za-z0-9+/=_-). Otros caracteres de "
|
||||
"la clave de API pueden causar errores."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Seleccione Exportar carpeta"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -322,8 +336,8 @@ msgstr "Descarga fallida"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
|
|
@ -344,32 +358,44 @@ msgstr "Detener"
|
|||
msgid "Detect Language"
|
||||
msgstr "Detectar idioma"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
# automatic translation
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Ejecutar"
|
||||
|
||||
# automatic translation
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Modelo:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
"El uso por primera vez de un modelo puede tardar varios minutos en cargarse."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Clave API:"
|
||||
|
||||
# automatic translation
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Tarea:"
|
||||
|
||||
# automatic translation
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
|
|
@ -638,14 +664,14 @@ msgid "End"
|
|||
msgstr "Fin"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Texto"
|
||||
|
||||
# automatic translation
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -655,7 +681,7 @@ msgstr "Traducción"
|
|||
msgid "View"
|
||||
msgstr "Ver"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Marcas de tiempo"
|
||||
|
||||
|
|
@ -663,67 +689,67 @@ msgstr "Marcas de tiempo"
|
|||
msgid "Export"
|
||||
msgstr "Exportar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Traducir"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Cambiar el tamaño"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr "Mostrar/Ocultar barra de búsqueda (Ctrl+F)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr "Encontrar:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr "Introducir texto para encontrar..."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr "Coincidencia anterior (Mayús+Intro)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
#, fuzzy
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr "Siguiente coincidencia (Enter)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr "Limpiar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr "Controles de reproducción:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr "Segmento de bucle"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
"Activar/desactivar la reproducción en bucle al hacer clic en segmentos de la "
|
||||
"transcripción"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr "Seguir audio"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
|
|
@ -732,44 +758,44 @@ msgstr ""
|
|||
"transcripción. Cuando está activado, se desplaza automáticamente al texto "
|
||||
"actual."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr "Desplácese hasta Actual"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr "Desplazarse hasta el texto hablado actualmente"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr "1 de 100+ coincidencias"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr "1 de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr " coincidencias"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr "No se encontraron coincidencias"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr " de 100+ coincidencias"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr " de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Clave de API requerida"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Ingrese la clave API de OpenAI en las preferencias"
|
||||
|
||||
|
|
@ -939,14 +965,14 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "No se puede guardar la clave de la API de OpenAI en el llavero"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
"El servidor Whisper no se pudo iniciar. Consulta los registros para obtener "
|
||||
"más detalles."
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1321,16 +1347,16 @@ msgstr "Sundanés"
|
|||
msgid "Cantonese"
|
||||
msgstr "Cantonés"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Se ha producido un error de conexión"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr "Iniciando Whisper.cpp..."
|
||||
|
||||
# automatic translation
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Cancelar transcripción"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: buzz\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-11-09 20:22+0200\n"
|
||||
"Language-Team: (Italiano) Albano Battistella <albanobattistella@gmail.com>\n"
|
||||
"Language: it_IT\n"
|
||||
|
|
@ -176,25 +176,39 @@ msgid "Live recording mode"
|
|||
msgstr "Modalità di registrazione in diretta"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr "Utilizza solo la CPU e disattiva l'accelerazione GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
"Imposta questa opzione se i modelli più grandi non si adattano alla memoria "
|
||||
"della tua GPU e Buzz si blocca"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr "Disabilita GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "Test della chiave API OpenAI"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -202,11 +216,11 @@ msgstr ""
|
|||
"La tua chiave API è valida. Buzz utilizzerà questa chiave per eseguire le "
|
||||
"trascrizioni API Whisper e le traduzioni AI."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Chiave API non valida"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -214,11 +228,11 @@ msgstr ""
|
|||
"L'API supporta solo caratteri base64 (A-Za-z0-9+/=). Altri caratteri nella "
|
||||
"chiave API potrebbero causare errori."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Seleziona la cartella di esportazione"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -316,8 +330,8 @@ msgstr "Download non riuscito"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
|
|
@ -335,29 +349,41 @@ msgstr "Arresta"
|
|||
msgid "Detect Language"
|
||||
msgstr "Rileva la lingua"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Avvia"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Modello:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
"Il caricamento di un modello al primo utilizzo potrebbe richiedere diversi "
|
||||
"minuti."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Chiave API:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Compito:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Lingua:"
|
||||
|
||||
|
|
@ -602,13 +628,13 @@ msgid "End"
|
|||
msgstr "Fine"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Testo"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -618,7 +644,7 @@ msgstr "Traduzione"
|
|||
msgid "View"
|
||||
msgstr "Visualizza"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Timestamp"
|
||||
|
||||
|
|
@ -626,66 +652,66 @@ msgstr "Timestamp"
|
|||
msgid "Export"
|
||||
msgstr "Esporta"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Tradurre"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Ridimensionare"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr "Trova"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr "Mostra/Nascondi barra di ricerca (Ctrl+F)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr "Trova:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr "Inserisci il testo per trovare..."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr "Corrispondenza precedente (Maiusc+Invio)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
#, fuzzy
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr "Prossima corrispondenza (Invio)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr "Elimina"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr "Controlli di riproduzione:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr "Ciclo di segmento"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
"Abilita/disabilita il loop quando si fa clic sui segmenti della trascrizione"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr "Segui Audio"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
|
|
@ -694,44 +720,44 @@ msgstr ""
|
|||
"trascrizione. Quando abilitato, scorre automaticamente fino al testo "
|
||||
"corrente."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr "Scorri fino al Corrente"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr "Scorrere fino al testo attualmente pronunciato"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr "1 di 100+ corrispondenze"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr "1 di"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr "corrispondenze"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr "Nessuna corrispondenza trovata"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr " di oltre 100 corrispondenze"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr " di "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Chiave API richiesta"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Inserisci la chiave API OpenAI nelle preferenze"
|
||||
|
||||
|
|
@ -891,13 +917,13 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "Impossibile salvare la chiave API OpenAI nel portachiavi"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
"Impossibile avviare il server Whisper. Controllare i log per i dettagli."
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1271,15 +1297,15 @@ msgstr "Sundanese"
|
|||
msgid "Cantonese"
|
||||
msgstr "Cantonese"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Si è verificato un errore di connessione"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr "Avvio di Whisper.cpp..."
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Inizio trascrizione..."
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -174,23 +174,37 @@ msgid "Live recording mode"
|
|||
msgstr "ライブ録音"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "OpenAI APIキー テスト"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -198,22 +212,22 @@ msgstr ""
|
|||
"あなたのAPIキーは有効です。Buzzはこのキーを使ってWhisper APIの書き起こしとAI"
|
||||
"翻訳を行います。"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
#, fuzzy
|
||||
msgid "Invalid API key"
|
||||
msgstr "OpenAI APIキー"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "出力フォルダを選択"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -311,8 +325,8 @@ msgstr "ダウンロード失敗"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "エラー"
|
||||
|
||||
|
|
@ -330,27 +344,39 @@ msgstr "停止する"
|
|||
msgid "Detect Language"
|
||||
msgstr "自動検出"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "実行"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "モデル:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "APIキー:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "タスク:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "言語:"
|
||||
|
||||
|
|
@ -594,13 +620,13 @@ msgid "End"
|
|||
msgstr "終了"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "テキスト"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -610,7 +636,7 @@ msgstr "翻訳"
|
|||
msgid "View"
|
||||
msgstr "表示"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "タイムスタンプ"
|
||||
|
||||
|
|
@ -618,107 +644,107 @@ msgstr "タイムスタンプ"
|
|||
msgid "Export"
|
||||
msgstr "出力"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "翻訳"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "リサイズ"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "APIキーが必要"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "設定画面でOpenAI APIキーを入力してください"
|
||||
|
||||
|
|
@ -877,12 +903,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "OpenAI API キーをkeyringに保存できません"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1254,15 +1280,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "接続エラーが発生しました"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "文字起こしをキャンセルする"
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"PO-Revision-Date: 2025-12-13 10:52+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-12-14 09:03+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: lv_LV\n"
|
||||
|
|
@ -177,25 +177,41 @@ msgstr ""
|
|||
"režīms"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr "Izmantot 8bitu kvantizāciju, lai samazinātu nepieciešamo atmiņu"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
"Izmantojams Huggingface un Faster whisper modeļiem, lai samazinātu "
|
||||
"nepieciešamo atmiņas daudzumu, nedaudz zaudējot atpazīšanas kvalitāti."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr "Optimizēt GPU atmiņu"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr "Izmantot tikai CPU un deaktivēt GPU paātrināšanu"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
"Aktivizējiet šo, ja lielāki modeļi neietilpst jūsu video kartes atmiņā un "
|
||||
"Buzz avarē"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr "Deaktivēt GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "OpenAI API atslēgas pārbaude"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -203,11 +219,11 @@ msgstr ""
|
|||
"Jūsu API atslēga ir derīga. Buzz izmantos to runas atpazīšanai ar Whisper "
|
||||
"API un tulkošanai."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Nederīga API atslēga"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -215,11 +231,11 @@ msgstr ""
|
|||
"API atbalsta tikai base64 simbolus (A-Za-z0-9+/=_-). Citi simboli API "
|
||||
"atslēgā var radīt kļūdas."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Izvēlieties mapi kurā eksportēt"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -275,7 +291,7 @@ msgstr "Veids"
|
|||
|
||||
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:83
|
||||
msgid "Huggingface ID of a Faster whisper model"
|
||||
msgstr "Faster Whisper modeļa Huggingface ID"
|
||||
msgstr "Faster whisper modeļa Huggingface ID"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:95
|
||||
msgid "Download"
|
||||
|
|
@ -317,8 +333,8 @@ msgstr "Lejupielāde neizdevās"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Kļūda"
|
||||
|
||||
|
|
@ -336,27 +352,42 @@ msgstr "Apturēt"
|
|||
msgid "Detect Language"
|
||||
msgstr "Noteikt valodu"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr "piem. eng, fra, deu"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
"Ievadiet valodas ISO 639-3 kodu (3 burti).\n"
|
||||
"Piemēram: eng (Angļu), fra (Franču), deu (Vācu),\n"
|
||||
"spa (Spāņu), lav (Latviešu)"
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Apstrādāt"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Modelis:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr "Pirmā modeļa ielādes reize var aizņemt pat vairākas minūtes."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "API atslēga:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Uzdevums:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Valoda:"
|
||||
|
||||
|
|
@ -600,13 +631,13 @@ msgid "End"
|
|||
msgstr "Beigas"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Teksts"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -616,7 +647,7 @@ msgstr "Tulkojums"
|
|||
msgid "View"
|
||||
msgstr "Skats"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Laiks"
|
||||
|
||||
|
|
@ -624,64 +655,64 @@ msgstr "Laiks"
|
|||
msgid "Export"
|
||||
msgstr "Eksportēt"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Tulkot"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Mainīt garumu"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr "Noteikt runātājus"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr "Meklēt"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr "Rādīt/Slēpt meklēšanas joslu (Ctrl+F)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr "Meklēt:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr "Ievadiet meklējamo..."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr "Iepriekšējais rezultāts (Shift+Enter)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr "Nākamais rezultāts (Ctrl+Enter)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr "Notīrīt"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr "Atskaņošana:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr "Atkārtot segmentu"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr "Nosaka vai atkārtot izvēlēto segmentu"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr "Sekot audio"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
|
|
@ -689,44 +720,44 @@ msgstr ""
|
|||
"Nosaka vai atskaņojot audio iezīmētajam segmentam vajadzētu automātiski "
|
||||
"sekot tam kas tiek atskaņots."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr "Pāriet uz tekošo"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr "Pāriet uz šobrīd atskaņojamo tesktu"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr "1 no 100+ "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr "1 no "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr " "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr "Nekas nav atrasts"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr " no 100+"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr " no "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "API atslēgas kļūda"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Lūdzu ievadiet OpenAI API atslēgu iestatījumos"
|
||||
|
||||
|
|
@ -884,14 +915,14 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "Neizdevās saglabāt OpenAI API atslēgu atslēgu saišķī"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
"Whisper serverim neizdevās ieslēgties. Lūdzu pārbaudiet lietotnes žurnāla "
|
||||
"ierakstus."
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1265,15 +1296,15 @@ msgstr "Sundāņu"
|
|||
msgid "Cantonese"
|
||||
msgstr "Kantonas"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Notika savienojuma kļūda"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr "Palaiž Whisper.cpp..."
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Sāk atpazīšanu..."
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-03-20 18:30+0100\n"
|
||||
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
|
|
@ -179,23 +179,37 @@ msgid "Live recording mode"
|
|||
msgstr "Live-opnamemodus"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "OpenAI-api-sleuteltest"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -203,11 +217,11 @@ msgstr ""
|
|||
"De api-sleutel is geldig. Buzz zal deze sleutel gebruiken om transcripties "
|
||||
"en AI-vertalingen op te vragen bij Whisper."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Ongeldige api-sleutel"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -215,11 +229,11 @@ msgstr ""
|
|||
"De api ondersteunt alleen base64-tekens (A–Za–z0–9+/=_-). Andere tekens "
|
||||
"kunnen problemen veroorzaken."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Kies een exportmap"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -317,8 +331,8 @@ msgstr "Het downloaden is mislukt"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Foutmelding"
|
||||
|
||||
|
|
@ -336,29 +350,41 @@ msgstr "Stoppen"
|
|||
msgid "Detect Language"
|
||||
msgstr "Taal herkennen"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Uitvoeren"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Model:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
"Let op: de eerste keer kan het enkele minuten duren voordat het model "
|
||||
"geladen is."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Api-sleutel:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Taak:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Taal:"
|
||||
|
||||
|
|
@ -599,13 +625,13 @@ msgid "End"
|
|||
msgstr "Einde"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -615,7 +641,7 @@ msgstr "Vertaling"
|
|||
msgid "View"
|
||||
msgstr "Bekijken"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Tijdstippen"
|
||||
|
||||
|
|
@ -623,107 +649,107 @@ msgstr "Tijdstippen"
|
|||
msgid "Export"
|
||||
msgstr "Exporteren"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Vertalen"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Grootte"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Api-sleutel vereist"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Voer de OpenAI-api-sleutel in in de instellingen"
|
||||
|
||||
|
|
@ -883,12 +909,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "De OpenAI-api-sleutel kan niet worden bewaard in de sleutelbos"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1260,15 +1286,15 @@ msgstr "Soedanees"
|
|||
msgid "Cantonese"
|
||||
msgstr "Kantonees"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Er is een verbindingsfout opgetreden"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Transcriptie wissen"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2024-03-17 20:50+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -178,44 +178,58 @@ msgid "Live recording mode"
|
|||
msgstr "Nagrywanie na żywo"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
#, fuzzy
|
||||
msgid "Invalid API key"
|
||||
msgstr "Nieprawidłowy URL"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -318,8 +332,8 @@ msgstr "Pobrany"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
|
|
@ -337,27 +351,39 @@ msgstr "Zatrzymaj"
|
|||
msgid "Detect Language"
|
||||
msgstr "Wykryj język"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Rozpocznij"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Model:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Zadanie:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Język:"
|
||||
|
||||
|
|
@ -606,13 +632,13 @@ msgid "End"
|
|||
msgstr "Zakończ"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Tekst"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
#, fuzzy
|
||||
|
|
@ -623,7 +649,7 @@ msgstr "Nowa transkrypcja"
|
|||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -631,107 +657,107 @@ msgstr ""
|
|||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -895,12 +921,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1273,15 +1299,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Anuluj transkrypcję"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Buzz\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2025-11-01 17:43-0300\n"
|
||||
"Last-Translator: Paulo Schopf <pschopf@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
|
|
@ -176,24 +176,38 @@ msgid "Live recording mode"
|
|||
msgstr "Modo de gravação ao vivo"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr "Usar somente a CPU e desabilitar aceleração por GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
"Marque isso se modelos maiores não couberem na memória da GPU e o Buzz travar"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr "Desabilitar GPU"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "Teste da Chave API OpenAI"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -201,11 +215,11 @@ msgstr ""
|
|||
"Sua chave API é válida. O Buzz usará esta chave para realizar transcrições "
|
||||
"API Whisper e traduções de IA."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "Chave API inválida"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
|
|
@ -213,11 +227,11 @@ msgstr ""
|
|||
"A API suporta apenas caracteres base64 (A-Za-z0-9+/=_-). Outros caracteres "
|
||||
"na chave API podem causar erros."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Selecionar Pasta de Exportação"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -315,8 +329,8 @@ msgstr "Falha ao baixar"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
|
|
@ -334,27 +348,39 @@ msgstr "Parar"
|
|||
msgid "Detect Language"
|
||||
msgstr "Detectar Idioma"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Executar"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Modelo:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr "O primeiro uso de um modelo pode levar vários minutos para carregar."
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Chave API:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Tarefa:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Idioma:"
|
||||
|
||||
|
|
@ -599,13 +625,13 @@ msgid "End"
|
|||
msgstr "Fim"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Texto"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -615,7 +641,7 @@ msgstr "Tradução"
|
|||
msgid "View"
|
||||
msgstr "Visualizar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Marcações de tempo"
|
||||
|
||||
|
|
@ -623,65 +649,65 @@ msgstr "Marcações de tempo"
|
|||
msgid "Export"
|
||||
msgstr "Exportar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Traduzir"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "Redimensionar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr "Procurar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr "Mostrar/Ocultar a Barra de Pesquisa"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr "Procurar:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr "Digite o texto a procurar..."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr "Encontro prévio (Shift+Enter)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
#, fuzzy
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr "Póximo encontro (Enter)"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr "Limpar"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr "Controles de Reprodução:"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr "Segmento de Loop"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr "Habilitar/desabilitar loop ao clicar em segmentos de transcrição"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr "Siga o Áudio"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
|
|
@ -689,44 +715,44 @@ msgstr ""
|
|||
"Ativar/desativar a opção de seguir a posição atual do áudio na transcrição. "
|
||||
"Quando ativado, rola automaticamente para o texto atual."
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr "Rolar para o Atual"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr "Role até o texto falado no momento"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr "1 de 100+ encontros"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr "1 de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr " encontros"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr "Nada encontrado"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr " de 100+ encontros"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr " de "
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Chave API Necessária"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Insira a chave API OpenAI nas preferências"
|
||||
|
||||
|
|
@ -886,12 +912,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "Não foi possível salvar a chave da API OpenAI no cofre de chaves"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr "Falha ao iniciar o servidor Whisper. Verifique os logs."
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1265,15 +1291,15 @@ msgstr "Sundanês"
|
|||
msgid "Cantonese"
|
||||
msgstr "Cantonês"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Ocorreu um erro de conexão"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr "Iniciando Whisper.cpp..."
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Iniciando transcrição..."
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Yevhen Popok <xalt7x.service@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -176,23 +176,37 @@ msgid "Live recording mode"
|
|||
msgstr "Живий запис"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "Тест API-ключа OpenAI"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
|
|
@ -200,22 +214,22 @@ msgstr ""
|
|||
"Ваш API-ключ дійсний. Buzz використає цей ключ для транскрипції з Whisper "
|
||||
"API та перекладу ШІ."
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
#, fuzzy
|
||||
msgid "Invalid API key"
|
||||
msgstr "API-ключ OpenAI"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "Виберіть теку для експорту"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -313,8 +327,8 @@ msgstr "Невдале завантаження"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "Помилка"
|
||||
|
||||
|
|
@ -332,27 +346,39 @@ msgstr "Зупинити"
|
|||
msgid "Detect Language"
|
||||
msgstr "Визначити мову"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "Запуск"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "Модель:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "API-ключ:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "Завдання:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "Мова:"
|
||||
|
||||
|
|
@ -596,13 +622,13 @@ msgid "End"
|
|||
msgstr "Кінець"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "Текст"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
msgid "Translation"
|
||||
|
|
@ -612,7 +638,7 @@ msgstr "Переклад"
|
|||
msgid "View"
|
||||
msgstr "Вигляд"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "Позначки часу"
|
||||
|
||||
|
|
@ -620,107 +646,107 @@ msgstr "Позначки часу"
|
|||
msgid "Export"
|
||||
msgstr "Експорт"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "Перекласти"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "Потрібен API-ключ"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "Будь ласка, введіть API-ключ OpenAI в налаштуваннях"
|
||||
|
||||
|
|
@ -879,12 +905,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "Не вдається додати до звʼязки ключів API-ключ OpenAI"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1256,15 +1282,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "Виникла помилка зʼєднання"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "Скасувати транскрипцію"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: lamb \n"
|
||||
|
|
@ -179,33 +179,47 @@ msgid "Live recording mode"
|
|||
msgstr "现场录制模式"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr "测试OpenAI API Key"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
msgstr "您的API密钥有效。Buzz将使用此密钥执行 Whisper API 识别和 AI 翻译。"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr "无效的API key"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
|
|
@ -213,11 +227,11 @@ msgid ""
|
|||
msgstr ""
|
||||
"API只支持 base64字符(A-Za-z0-9+/=)。其他字符在API密钥中可能导致错误。"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr "选择输出文件夹"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -321,8 +335,8 @@ msgstr "下载模型失败"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
|
|
@ -340,27 +354,39 @@ msgstr "停止"
|
|||
msgid "Detect Language"
|
||||
msgstr "检测语言"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "开始执行"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "模型:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr "首次使用模型可能需要几分钟的时间才能加载"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr "Api Key:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "任务:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "语言:"
|
||||
|
||||
|
|
@ -607,13 +633,13 @@ msgid "End"
|
|||
msgstr "结束"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr "文本"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
#, fuzzy
|
||||
|
|
@ -624,7 +650,7 @@ msgstr "翻译"
|
|||
msgid "View"
|
||||
msgstr "查看"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr "时间戳"
|
||||
|
||||
|
|
@ -632,107 +658,107 @@ msgstr "时间戳"
|
|||
msgid "Export"
|
||||
msgstr "导出"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr "翻译"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr "调整大小"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr "需要API Key"
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr "请在偏好设置中输入OpenAI API Key"
|
||||
|
||||
|
|
@ -895,12 +921,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr "无法将OpenAI API密钥保存到密钥串"
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1273,15 +1299,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr "连接发生错误"
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "取消识别"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-16 08:58+0200\n"
|
||||
"POT-Creation-Date: 2025-12-17 19:51+0200\n"
|
||||
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Lamb\n"
|
||||
|
|
@ -178,43 +178,57 @@ msgid "Live recording mode"
|
|||
msgstr "現場錄製"
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:195
|
||||
msgid "Use 8-bit quantization to reduce memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:199
|
||||
msgid ""
|
||||
"Applies to Huggingface and Faster Whisper models. Reduces GPU memory usage "
|
||||
"but may slightly decrease transcription quality."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:203
|
||||
msgid "Reduce GPU RAM"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:209
|
||||
msgid "Use only CPU and disable GPU acceleration"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:198
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:212
|
||||
msgid "Set this if larger models do not fit your GPU memory and Buzz crashes"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:214
|
||||
msgid "Disable GPU"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:225
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:231
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:239
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:245
|
||||
msgid "OpenAI API Key Test"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:226
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:240
|
||||
msgid ""
|
||||
"Your API key is valid. Buzz will use this key to perform Whisper API "
|
||||
"transcriptions and AI translations."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:242
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:256
|
||||
msgid "Invalid API key"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:243
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:257
|
||||
msgid ""
|
||||
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
|
||||
"API key may cause errors."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:264
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:278
|
||||
msgid "Select Export Folder"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:334
|
||||
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:359
|
||||
msgid ""
|
||||
"OpenAI API returned invalid response. Please check the API url or your key. "
|
||||
"Transcription and translation may still work if the API does not support key "
|
||||
|
|
@ -316,8 +330,8 @@ msgstr "下載模型"
|
|||
#: buzz/widgets/transcription_tasks_table_widget.py:704
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:774
|
||||
#: buzz/widgets/transcription_tasks_table_widget.py:805
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:577
|
||||
#: buzz/model_loader.py:591
|
||||
#: buzz/widgets/main_window.py:283 buzz/model_loader.py:651
|
||||
#: buzz/model_loader.py:665
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -335,27 +349,39 @@ msgstr "停止"
|
|||
msgid "Detect Language"
|
||||
msgstr "檢測語言"
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:26
|
||||
msgid "e.g., eng, fra, deu"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/mms_language_line_edit.py:28
|
||||
msgid ""
|
||||
"Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/file_transcriber_widget.py:84
|
||||
msgid "Run"
|
||||
msgstr "開始執行"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:93
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:101
|
||||
msgid "Model:"
|
||||
msgstr "模型:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:105
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:113
|
||||
msgid "First time use of a model may take up to several minutest to load."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:115
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:123
|
||||
msgid "Api Key:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:116
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:124
|
||||
msgid "Task:"
|
||||
msgstr "任務:"
|
||||
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:117
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:125
|
||||
#: buzz/widgets/transcriber/transcription_options_group_box.py:126
|
||||
msgid "Language:"
|
||||
msgstr "語言:"
|
||||
|
||||
|
|
@ -602,13 +628,13 @@ msgid "End"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:278
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:43
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:44
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:32
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_segments_editor_widget.py:279
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:49
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:50
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:33
|
||||
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:53
|
||||
#, fuzzy
|
||||
|
|
@ -619,7 +645,7 @@ msgstr "新錄製"
|
|||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:56
|
||||
#: buzz/widgets/transcription_viewer/transcription_view_mode_tool_button.py:57
|
||||
msgid "Timestamps"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -627,107 +653,107 @@ msgstr ""
|
|||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:285
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
|
||||
msgid "Translate"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:295
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:296
|
||||
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:175
|
||||
msgid "Resize"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:308
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:309
|
||||
msgid "Identify Speakers"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:320
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:321
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:325
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:326
|
||||
msgid "Show/Hide Search Bar (Ctrl+F)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:424
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:425
|
||||
msgid "Find:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:430
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:431
|
||||
msgid "Enter text to find..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:443
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:444
|
||||
msgid "Previous match (Shift+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:452
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:453
|
||||
msgid "Next match (Ctrl+Enter)"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:461
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:462
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:489
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:490
|
||||
msgid "Playback Controls:"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:494
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:495
|
||||
msgid "Loop Segment"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:497
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:498
|
||||
msgid "Enable/disable looping when clicking on transcript segments"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:504
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:505
|
||||
msgid "Follow Audio"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:507
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:508
|
||||
msgid ""
|
||||
"Enable/disable following the current audio position in the transcript. When "
|
||||
"enabled, automatically scrolls to current text."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:556
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:557
|
||||
msgid "Scroll to Current"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:559
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:560
|
||||
msgid "Scroll to the currently spoken text"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:892
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:893
|
||||
msgid "1 of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
msgid "1 of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:895
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:896
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:900
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:901
|
||||
msgid "No matches found"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:973
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:974
|
||||
msgid " of 100+ matches"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:976
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:977
|
||||
msgid " of "
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1368
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1372
|
||||
msgid "API Key Required"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1369
|
||||
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:1373
|
||||
msgid "Please enter OpenAI API Key in preferences"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -889,12 +915,12 @@ msgid "Unable to save OpenAI API key to keyring"
|
|||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:57
|
||||
#: buzz/transcriber/recording_transcriber.py:397
|
||||
#: buzz/transcriber/recording_transcriber.py:417
|
||||
msgid "Whisper server failed to start. Check logs for details."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/local_whisper_cpp_server_transcriber.py:60
|
||||
#: buzz/transcriber/recording_transcriber.py:401
|
||||
#: buzz/transcriber/recording_transcriber.py:421
|
||||
msgid ""
|
||||
"Whisper server failed to start due to insufficient memory. Please try again "
|
||||
"with a smaller model. To force CPU mode use BUZZ_FORCE_CPU=TRUE environment "
|
||||
|
|
@ -1267,15 +1293,15 @@ msgstr ""
|
|||
msgid "Cantonese"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:224 buzz/model_loader.py:610
|
||||
#: buzz/transcriber/recording_transcriber.py:244 buzz/model_loader.py:684
|
||||
msgid "A connection error occurred"
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:333
|
||||
#: buzz/transcriber/recording_transcriber.py:353
|
||||
msgid "Starting Whisper.cpp..."
|
||||
msgstr ""
|
||||
|
||||
#: buzz/transcriber/recording_transcriber.py:388
|
||||
#: buzz/transcriber/recording_transcriber.py:408
|
||||
#, fuzzy
|
||||
msgid "Starting transcription..."
|
||||
msgstr "取消錄製"
|
||||
|
|
|
|||
|
|
@ -131,6 +131,80 @@ HUGGING_FACE_MODEL_ALLOW_PATTERNS = [
|
|||
"vocab.json",
|
||||
]
|
||||
|
||||
# MMS models use different patterns - adapters are downloaded on-demand by transformers
|
||||
MMS_MODEL_ALLOW_PATTERNS = [
|
||||
"model.safetensors",
|
||||
"pytorch_model.bin",
|
||||
"config.json",
|
||||
"preprocessor_config.json",
|
||||
"tokenizer_config.json",
|
||||
"vocab.json",
|
||||
"special_tokens_map.json",
|
||||
"added_tokens.json",
|
||||
]
|
||||
|
||||
# ISO 639-1 to ISO 639-3 language code mapping for MMS models
|
||||
ISO_639_1_TO_3 = {
|
||||
"en": "eng", "fr": "fra", "de": "deu", "es": "spa", "it": "ita",
|
||||
"pt": "por", "ru": "rus", "ja": "jpn", "ko": "kor", "zh": "cmn",
|
||||
"ar": "ara", "hi": "hin", "nl": "nld", "pl": "pol", "sv": "swe",
|
||||
"tr": "tur", "uk": "ukr", "vi": "vie", "cs": "ces", "da": "dan",
|
||||
"fi": "fin", "el": "ell", "he": "heb", "hu": "hun", "id": "ind",
|
||||
"ms": "zsm", "no": "nob", "ro": "ron", "sk": "slk", "th": "tha",
|
||||
"bg": "bul", "ca": "cat", "hr": "hrv", "lt": "lit", "lv": "lav",
|
||||
"sl": "slv", "et": "est", "sr": "srp", "tl": "tgl", "bn": "ben",
|
||||
"ta": "tam", "te": "tel", "mr": "mar", "gu": "guj", "kn": "kan",
|
||||
"ml": "mal", "pa": "pan", "ur": "urd", "fa": "pes", "sw": "swh",
|
||||
"af": "afr", "az": "azj", "be": "bel", "bs": "bos", "cy": "cym",
|
||||
"eo": "epo", "eu": "eus", "ga": "gle", "gl": "glg", "hy": "hye",
|
||||
"is": "isl", "ka": "kat", "kk": "kaz", "km": "khm", "lo": "lao",
|
||||
"mk": "mkd", "mn": "khk", "my": "mya", "ne": "npi", "si": "sin",
|
||||
"sq": "sqi", "uz": "uzn", "zu": "zul", "am": "amh", "jw": "jav",
|
||||
"la": "lat", "so": "som", "su": "sun", "tt": "tat", "yo": "yor",
|
||||
}
|
||||
|
||||
|
||||
def map_language_to_mms(language_code: str) -> str:
|
||||
"""Convert ISO 639-1 code to ISO 639-3 code for MMS models.
|
||||
|
||||
If the code is already 3 letters, returns it as-is.
|
||||
If the code is not found in the mapping, returns as-is.
|
||||
"""
|
||||
if not language_code:
|
||||
return "eng" # Default to English for MMS
|
||||
if len(language_code) == 3:
|
||||
return language_code # Already ISO 639-3
|
||||
return ISO_639_1_TO_3.get(language_code, language_code)
|
||||
|
||||
|
||||
def is_mms_model(model_id: str) -> bool:
|
||||
"""Detect if a HuggingFace model is an MMS (Massively Multilingual Speech) model.
|
||||
|
||||
Detection criteria:
|
||||
1. Model ID contains "mms-" (e.g., facebook/mms-1b-all)
|
||||
2. Model config has model_type == "wav2vec2" with adapter architecture
|
||||
"""
|
||||
if not model_id:
|
||||
return False
|
||||
|
||||
# Fast check: model ID pattern
|
||||
if "mms-" in model_id.lower():
|
||||
return True
|
||||
|
||||
# For cached/downloaded models, check config.json
|
||||
try:
|
||||
import json
|
||||
config_path = huggingface_hub.hf_hub_download(
|
||||
model_id, "config.json", local_files_only=True, cache_dir=model_root_dir
|
||||
)
|
||||
with open(config_path) as f:
|
||||
config = json.load(f)
|
||||
# MMS models have model_type "wav2vec2" and use adapter architecture
|
||||
return (config.get("model_type") == "wav2vec2"
|
||||
and config.get("adapter_attn_dim") is not None)
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
@dataclass()
|
||||
class TranscriptionModel:
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ class Settings:
|
|||
AUDIO_PLAYBACK_RATE = "audio/playback-rate"
|
||||
|
||||
FORCE_CPU = "force-cpu"
|
||||
REDUCE_GPU_MEMORY = "reduce-gpu-memory"
|
||||
|
||||
def get_user_identifier(self) -> str:
|
||||
user_id = self.value(self.Key.USER_IDENTIFIER, "")
|
||||
|
|
|
|||
|
|
@ -82,9 +82,6 @@ def _get_portal_secret() -> bytes | None:
|
|||
break
|
||||
|
||||
if secret_data:
|
||||
logging.debug(
|
||||
"Successfully retrieved portal secret (%d bytes)", len(secret_data)
|
||||
)
|
||||
return secret_data
|
||||
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ from PyQt6.QtCore import QObject, pyqtSignal
|
|||
from buzz import whisper_audio
|
||||
from buzz.locale import _
|
||||
from buzz.assets import APP_BASE_DIR
|
||||
from buzz.model_loader import ModelType
|
||||
from buzz.model_loader import ModelType, map_language_to_mms
|
||||
from buzz.settings.settings import Settings
|
||||
from buzz.transcriber.transcriber import TranscriptionOptions, Task
|
||||
from buzz.transformers_whisper import TransformersWhisper
|
||||
from buzz.transformers_whisper import TransformersTranscriber
|
||||
from buzz.settings.recording_transcriber_mode import RecordingTranscriberMode
|
||||
|
||||
import whisper
|
||||
|
|
@ -105,10 +105,18 @@ class RecordingTranscriber(QObject):
|
|||
if force_cpu != "false":
|
||||
device = "cpu"
|
||||
|
||||
# Check if user wants reduced GPU memory usage (int8 quantization)
|
||||
reduce_gpu_memory = os.getenv("BUZZ_REDUCE_GPU_MEMORY", "false") != "false"
|
||||
compute_type = "default"
|
||||
if reduce_gpu_memory:
|
||||
compute_type = "int8" if device == "cpu" else "int8_float16"
|
||||
logging.debug(f"Using {compute_type} compute type for reduced memory usage")
|
||||
|
||||
model = faster_whisper.WhisperModel(
|
||||
model_size_or_path=model_path,
|
||||
download_root=model_root_dir,
|
||||
device=device,
|
||||
compute_type=compute_type,
|
||||
cpu_threads=(os.cpu_count() or 8)//2,
|
||||
)
|
||||
|
||||
|
|
@ -132,7 +140,7 @@ class RecordingTranscriber(QObject):
|
|||
logging.debug("Will use whisper API on %s, %s",
|
||||
custom_openai_base_url, self.whisper_api_model)
|
||||
else: # ModelType.HUGGING_FACE
|
||||
model = TransformersWhisper(model_path)
|
||||
model = TransformersTranscriber(model_path)
|
||||
|
||||
initial_prompt = self.transcription_options.initial_prompt
|
||||
|
||||
|
|
@ -211,13 +219,25 @@ class RecordingTranscriber(QObject):
|
|||
self.transcription_options.model.model_type
|
||||
== ModelType.HUGGING_FACE
|
||||
):
|
||||
assert isinstance(model, TransformersWhisper)
|
||||
assert isinstance(model, TransformersTranscriber)
|
||||
# Handle MMS-specific language and task
|
||||
if model.is_mms_model:
|
||||
language = map_language_to_mms(
|
||||
self.transcription_options.language or "eng"
|
||||
)
|
||||
effective_task = Task.TRANSCRIBE.value
|
||||
else:
|
||||
language = (
|
||||
self.transcription_options.language
|
||||
if self.transcription_options.language is not None
|
||||
else "en"
|
||||
)
|
||||
effective_task = self.transcription_options.task.value
|
||||
|
||||
result = model.transcribe(
|
||||
audio=samples,
|
||||
language=self.transcription_options.language
|
||||
if self.transcription_options.language is not None
|
||||
else "en",
|
||||
task=self.transcription_options.task.value,
|
||||
language=language,
|
||||
task=effective_task,
|
||||
)
|
||||
else: # OPEN_AI_WHISPER_API, also used for WHISPER_CPP
|
||||
if self.openai_client is None:
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ from PyQt6.QtCore import QObject
|
|||
|
||||
from buzz import whisper_audio
|
||||
from buzz.conn import pipe_stderr
|
||||
from buzz.model_loader import ModelType, WhisperModelSize
|
||||
from buzz.transformers_whisper import TransformersWhisper
|
||||
from buzz.model_loader import ModelType, WhisperModelSize, map_language_to_mms
|
||||
from buzz.transformers_whisper import TransformersTranscriber
|
||||
from buzz.transcriber.file_transcriber import FileTranscriber
|
||||
from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task
|
||||
from buzz.transcriber.whisper_cpp import WhisperCpp
|
||||
|
|
@ -123,6 +123,10 @@ class WhisperFileTranscriber(FileTranscriber):
|
|||
def transcribe_whisper(
|
||||
cls, stderr_conn: Connection, task: FileTranscriptionTask
|
||||
) -> None:
|
||||
# Preload CUDA libraries in the subprocess - must be done before importing torch
|
||||
# This is needed because multiprocessing creates a fresh process without the main process's preloaded libraries
|
||||
from buzz import cuda_setup # noqa: F401
|
||||
|
||||
# Patch subprocess on Windows to prevent console window flash
|
||||
# This is needed because multiprocessing spawns a new process without the main process patches
|
||||
if sys.platform == "win32":
|
||||
|
|
@ -182,17 +186,29 @@ class WhisperFileTranscriber(FileTranscriber):
|
|||
|
||||
@classmethod
|
||||
def transcribe_hugging_face(cls, task: FileTranscriptionTask) -> List[Segment]:
|
||||
model = TransformersWhisper(task.model_path)
|
||||
language = (
|
||||
task.transcription_options.language
|
||||
if task.transcription_options.language is not None
|
||||
else "en"
|
||||
)
|
||||
model = TransformersTranscriber(task.model_path)
|
||||
|
||||
# Handle language - MMS uses ISO 639-3 codes, Whisper uses ISO 639-1
|
||||
if model.is_mms_model:
|
||||
language = map_language_to_mms(task.transcription_options.language or "eng")
|
||||
# MMS only supports transcription, ignore translation task
|
||||
effective_task = Task.TRANSCRIBE.value
|
||||
# MMS doesn't support word-level timestamps
|
||||
word_timestamps = False
|
||||
else:
|
||||
language = (
|
||||
task.transcription_options.language
|
||||
if task.transcription_options.language is not None
|
||||
else "en"
|
||||
)
|
||||
effective_task = task.transcription_options.task.value
|
||||
word_timestamps = task.transcription_options.word_level_timings
|
||||
|
||||
result = model.transcribe(
|
||||
audio=task.file_path,
|
||||
language=language,
|
||||
task=task.transcription_options.task.value,
|
||||
word_timestamps=task.transcription_options.word_level_timings,
|
||||
task=effective_task,
|
||||
word_timestamps=word_timestamps,
|
||||
)
|
||||
return [
|
||||
Segment(
|
||||
|
|
@ -228,10 +244,18 @@ class WhisperFileTranscriber(FileTranscriber):
|
|||
if force_cpu != "false":
|
||||
device = "cpu"
|
||||
|
||||
# Check if user wants reduced GPU memory usage (int8 quantization)
|
||||
reduce_gpu_memory = os.getenv("BUZZ_REDUCE_GPU_MEMORY", "false") != "false"
|
||||
compute_type = "default"
|
||||
if reduce_gpu_memory:
|
||||
compute_type = "int8" if device == "cpu" else "int8_float16"
|
||||
logging.debug(f"Using {compute_type} compute type for reduced memory usage")
|
||||
|
||||
model = faster_whisper.WhisperModel(
|
||||
model_size_or_path=model_size_or_path,
|
||||
download_root=model_root_dir,
|
||||
device=device,
|
||||
compute_type=compute_type,
|
||||
cpu_threads=(os.cpu_count() or 8)//2,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,28 @@
|
|||
import os
|
||||
import sys
|
||||
import logging
|
||||
import platform
|
||||
import numpy as np
|
||||
import torch
|
||||
import requests
|
||||
from typing import Optional, Union
|
||||
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
|
||||
from typing import Union
|
||||
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline, BitsAndBytesConfig
|
||||
from transformers.pipelines import AutomaticSpeechRecognitionPipeline
|
||||
from transformers.pipelines.audio_utils import ffmpeg_read
|
||||
from transformers.pipelines.automatic_speech_recognition import is_torchaudio_available
|
||||
|
||||
from buzz.model_loader import is_mms_model, map_language_to_mms
|
||||
|
||||
|
||||
def is_intel_mac() -> bool:
|
||||
"""Check if running on Intel Mac (x86_64)."""
|
||||
return sys.platform == 'darwin' and platform.machine() == 'x86_64'
|
||||
|
||||
|
||||
def is_peft_model(model_id: str) -> bool:
|
||||
"""Check if model is a PEFT model based on model ID containing '-peft'."""
|
||||
return "-peft" in model_id.lower()
|
||||
|
||||
|
||||
class PipelineWithProgress(AutomaticSpeechRecognitionPipeline): # pragma: no cover
|
||||
# Copy of transformers `AutomaticSpeechRecognitionPipeline.chunk_iter` method with custom progress output
|
||||
|
|
@ -162,11 +176,23 @@ class PipelineWithProgress(AutomaticSpeechRecognitionPipeline): # pragma: no co
|
|||
yield {"is_last": True, **processed, **extra}
|
||||
|
||||
|
||||
class TransformersWhisper:
|
||||
def __init__(
|
||||
self, model_id: str
|
||||
):
|
||||
class TransformersTranscriber:
|
||||
"""Unified transcriber for HuggingFace models (Whisper and MMS)."""
|
||||
|
||||
def __init__(self, model_id: str):
|
||||
self.model_id = model_id
|
||||
self._is_mms = is_mms_model(model_id)
|
||||
self._is_peft = is_peft_model(model_id)
|
||||
|
||||
@property
|
||||
def is_mms_model(self) -> bool:
|
||||
"""Returns True if this is an MMS model."""
|
||||
return self._is_mms
|
||||
|
||||
@property
|
||||
def is_peft_model(self) -> bool:
|
||||
"""Returns True if this is a PEFT model."""
|
||||
return self._is_peft
|
||||
|
||||
def transcribe(
|
||||
self,
|
||||
|
|
@ -175,39 +201,85 @@ class TransformersWhisper:
|
|||
task: str,
|
||||
word_timestamps: bool = False,
|
||||
):
|
||||
"""Transcribe audio using either Whisper or MMS model."""
|
||||
if self._is_mms:
|
||||
return self._transcribe_mms(audio, language)
|
||||
else:
|
||||
return self._transcribe_whisper(audio, language, task, word_timestamps)
|
||||
|
||||
def _transcribe_whisper(
|
||||
self,
|
||||
audio: Union[str, np.ndarray],
|
||||
language: str,
|
||||
task: str,
|
||||
word_timestamps: bool = False,
|
||||
):
|
||||
"""Transcribe using Whisper model."""
|
||||
force_cpu = os.getenv("BUZZ_FORCE_CPU", "false")
|
||||
use_cuda = torch.cuda.is_available() and force_cpu == "false"
|
||||
device = "cuda" if use_cuda else "cpu"
|
||||
torch_dtype = torch.float16 if use_cuda else torch.float32
|
||||
|
||||
use_safetensors = True
|
||||
if os.path.exists(self.model_id):
|
||||
safetensors_files = [f for f in os.listdir(self.model_id) if f.endswith(".safetensors")]
|
||||
use_safetensors = len(safetensors_files) > 0
|
||||
# Check if this is a PEFT model
|
||||
if is_peft_model(self.model_id):
|
||||
model, processor, use_8bit = self._load_peft_model(device, torch_dtype)
|
||||
else:
|
||||
use_safetensors = True
|
||||
if os.path.exists(self.model_id):
|
||||
safetensors_files = [f for f in os.listdir(self.model_id) if f.endswith(".safetensors")]
|
||||
use_safetensors = len(safetensors_files) > 0
|
||||
|
||||
model = AutoModelForSpeechSeq2Seq.from_pretrained(
|
||||
self.model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=use_safetensors
|
||||
)
|
||||
# Check if user wants reduced GPU memory usage (8-bit quantization)
|
||||
# Skip on Intel Macs as bitsandbytes is not available there
|
||||
reduce_gpu_memory = os.getenv("BUZZ_REDUCE_GPU_MEMORY", "false") != "false"
|
||||
use_8bit = False
|
||||
if device == "cuda" and reduce_gpu_memory and not is_intel_mac():
|
||||
try:
|
||||
import bitsandbytes # noqa: F401
|
||||
use_8bit = True
|
||||
print("Using 8-bit quantization for reduced GPU memory usage")
|
||||
except ImportError:
|
||||
print("bitsandbytes not available, using standard precision")
|
||||
|
||||
model.generation_config.language = language
|
||||
model.to(device)
|
||||
if use_8bit:
|
||||
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
|
||||
model = AutoModelForSpeechSeq2Seq.from_pretrained(
|
||||
self.model_id,
|
||||
quantization_config=quantization_config,
|
||||
device_map="auto",
|
||||
use_safetensors=use_safetensors
|
||||
)
|
||||
else:
|
||||
model = AutoModelForSpeechSeq2Seq.from_pretrained(
|
||||
self.model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=use_safetensors
|
||||
)
|
||||
model.to(device)
|
||||
|
||||
processor = AutoProcessor.from_pretrained(self.model_id)
|
||||
model.generation_config.language = language
|
||||
|
||||
pipe = pipeline(
|
||||
"automatic-speech-recognition",
|
||||
pipeline_class=PipelineWithProgress,
|
||||
generate_kwargs={"language": language, "task": task},
|
||||
model=model,
|
||||
tokenizer=processor.tokenizer,
|
||||
feature_extractor=processor.feature_extractor,
|
||||
processor = AutoProcessor.from_pretrained(self.model_id)
|
||||
|
||||
pipeline_kwargs = {
|
||||
"task": "automatic-speech-recognition",
|
||||
"pipeline_class": PipelineWithProgress,
|
||||
"generate_kwargs": {
|
||||
"language": language,
|
||||
"task": task,
|
||||
"no_repeat_ngram_size": 3,
|
||||
"repetition_penalty": 1.2,
|
||||
},
|
||||
"model": model,
|
||||
"tokenizer": processor.tokenizer,
|
||||
"feature_extractor": processor.feature_extractor,
|
||||
# pipeline has built in chunking, works faster, but we loose progress output
|
||||
# needed for word level timestamps, otherwise there is huge RAM usage on longer audios
|
||||
chunk_length_s=30 if word_timestamps else None,
|
||||
torch_dtype=torch_dtype,
|
||||
device=device,
|
||||
ignore_warning=True # Ignore warning about chunk_length_s being experimental for seq2seq models
|
||||
)
|
||||
"chunk_length_s": 30 if word_timestamps else None,
|
||||
"torch_dtype": torch_dtype,
|
||||
"ignore_warning": True, # Ignore warning about chunk_length_s being experimental for seq2seq models
|
||||
}
|
||||
if not use_8bit:
|
||||
pipeline_kwargs["device"] = device
|
||||
pipe = pipeline(**pipeline_kwargs)
|
||||
|
||||
transcript = pipe(
|
||||
audio,
|
||||
|
|
@ -238,3 +310,207 @@ class TransformersWhisper:
|
|||
"segments": segments,
|
||||
}
|
||||
|
||||
def _load_peft_model(self, device: str, torch_dtype):
|
||||
"""Load a PEFT (Parameter-Efficient Fine-Tuning) model.
|
||||
|
||||
PEFT models require loading the base model first, then applying the adapter.
|
||||
The base model path is extracted from the PEFT config.
|
||||
|
||||
Returns:
|
||||
Tuple of (model, processor, use_8bit)
|
||||
"""
|
||||
from peft import PeftModel, PeftConfig
|
||||
from transformers import WhisperForConditionalGeneration, WhisperFeatureExtractor, WhisperTokenizer
|
||||
|
||||
print(f"Loading PEFT model: {self.model_id}")
|
||||
|
||||
# Get the PEFT model ID (handle both local paths and repo IDs)
|
||||
peft_model_id = self._get_peft_repo_id()
|
||||
|
||||
# Load PEFT config to get base model path
|
||||
peft_config = PeftConfig.from_pretrained(peft_model_id)
|
||||
base_model_path = peft_config.base_model_name_or_path
|
||||
print(f"PEFT base model: {base_model_path}")
|
||||
|
||||
# Load the base Whisper model
|
||||
# Use 8-bit quantization on CUDA if user enabled "Reduce GPU RAM" and bitsandbytes is available
|
||||
# Skip on Intel Macs as bitsandbytes is not available there
|
||||
reduce_gpu_memory = os.getenv("BUZZ_REDUCE_GPU_MEMORY", "false") != "false"
|
||||
use_8bit = False
|
||||
if device == "cuda" and reduce_gpu_memory and not is_intel_mac():
|
||||
try:
|
||||
import bitsandbytes # noqa: F401
|
||||
use_8bit = True
|
||||
print("Using 8-bit quantization for reduced GPU memory usage")
|
||||
except ImportError:
|
||||
print("bitsandbytes not available, using standard precision for PEFT model")
|
||||
|
||||
if use_8bit:
|
||||
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
|
||||
model = WhisperForConditionalGeneration.from_pretrained(
|
||||
base_model_path,
|
||||
quantization_config=quantization_config,
|
||||
device_map="auto"
|
||||
)
|
||||
else:
|
||||
model = WhisperForConditionalGeneration.from_pretrained(
|
||||
base_model_path,
|
||||
torch_dtype=torch_dtype,
|
||||
low_cpu_mem_usage=True
|
||||
)
|
||||
model.to(device)
|
||||
|
||||
# Apply the PEFT adapter
|
||||
model = PeftModel.from_pretrained(model, peft_model_id)
|
||||
model.config.use_cache = True
|
||||
|
||||
# Load feature extractor and tokenizer from base model
|
||||
feature_extractor = WhisperFeatureExtractor.from_pretrained(base_model_path)
|
||||
tokenizer = WhisperTokenizer.from_pretrained(base_model_path, task="transcribe")
|
||||
|
||||
# Create a simple processor-like object that the pipeline expects
|
||||
class PeftProcessor:
|
||||
def __init__(self, feature_extractor, tokenizer):
|
||||
self.feature_extractor = feature_extractor
|
||||
self.tokenizer = tokenizer
|
||||
|
||||
processor = PeftProcessor(feature_extractor, tokenizer)
|
||||
|
||||
return model, processor, use_8bit
|
||||
|
||||
def _get_peft_repo_id(self) -> str:
|
||||
"""Extract HuggingFace repo ID from local cache path for PEFT models."""
|
||||
model_id = self.model_id
|
||||
|
||||
# If it's already a repo ID (contains / but not a file path), return as-is
|
||||
if "/" in model_id and not os.path.exists(model_id):
|
||||
return model_id
|
||||
|
||||
# Extract repo ID from cache path
|
||||
if "models--" in model_id:
|
||||
parts = model_id.split("models--")
|
||||
if len(parts) > 1:
|
||||
repo_part = parts[1].split(os.sep + "snapshots")[0]
|
||||
repo_id = repo_part.replace("--", "/", 1)
|
||||
return repo_id
|
||||
|
||||
# Fallback: return as-is
|
||||
return model_id
|
||||
|
||||
def _get_mms_repo_id(self) -> str:
|
||||
"""Extract HuggingFace repo ID from local cache path or return as-is if already a repo ID."""
|
||||
model_id = self.model_id
|
||||
|
||||
# If it's already a repo ID (contains / but not a file path), return as-is
|
||||
if "/" in model_id and not os.path.exists(model_id):
|
||||
return model_id
|
||||
|
||||
# Extract repo ID from cache path like:
|
||||
# Linux: /home/user/.cache/Buzz/models/models--facebook--mms-1b-all/snapshots/xxx
|
||||
# Windows: C:\Users\user\.cache\Buzz\models\models--facebook--mms-1b-all\snapshots\xxx
|
||||
if "models--" in model_id:
|
||||
# Extract the part after "models--" and before "/snapshots" or "\snapshots"
|
||||
parts = model_id.split("models--")
|
||||
if len(parts) > 1:
|
||||
# Split on os.sep to handle both Windows and Unix paths
|
||||
repo_part = parts[1].split(os.sep + "snapshots")[0]
|
||||
# Convert facebook--mms-1b-all to facebook/mms-1b-all
|
||||
repo_id = repo_part.replace("--", "/", 1)
|
||||
return repo_id
|
||||
|
||||
# Fallback: return as-is
|
||||
return model_id
|
||||
|
||||
def _transcribe_mms(
|
||||
self,
|
||||
audio: Union[str, np.ndarray],
|
||||
language: str,
|
||||
):
|
||||
"""Transcribe using MMS (Massively Multilingual Speech) model."""
|
||||
from transformers import Wav2Vec2ForCTC, AutoProcessor as MMSAutoProcessor
|
||||
from transformers.pipelines.audio_utils import ffmpeg_read as mms_ffmpeg_read
|
||||
|
||||
force_cpu = os.getenv("BUZZ_FORCE_CPU", "false")
|
||||
use_cuda = torch.cuda.is_available() and force_cpu == "false"
|
||||
device = "cuda" if use_cuda else "cpu"
|
||||
|
||||
# Map language code to ISO 639-3 for MMS
|
||||
mms_language = map_language_to_mms(language)
|
||||
print(f"MMS transcription with language: {mms_language} (original: {language})")
|
||||
|
||||
sys.stderr.write("0%\n")
|
||||
|
||||
# Use repo ID for MMS to allow adapter downloads
|
||||
# Local paths don't work for adapter downloads
|
||||
repo_id = self._get_mms_repo_id()
|
||||
print(f"MMS using repo ID: {repo_id} (from model_id: {self.model_id})")
|
||||
|
||||
# Load processor and model with target language
|
||||
# This will download the language adapter if not cached
|
||||
processor = MMSAutoProcessor.from_pretrained(
|
||||
repo_id,
|
||||
target_lang=mms_language
|
||||
)
|
||||
|
||||
model = Wav2Vec2ForCTC.from_pretrained(
|
||||
repo_id,
|
||||
target_lang=mms_language,
|
||||
ignore_mismatched_sizes=True
|
||||
)
|
||||
model.to(device)
|
||||
|
||||
sys.stderr.write("25%\n")
|
||||
|
||||
# Load and process audio
|
||||
if isinstance(audio, str):
|
||||
with open(audio, "rb") as f:
|
||||
audio_data = f.read()
|
||||
audio_array = mms_ffmpeg_read(audio_data, processor.feature_extractor.sampling_rate)
|
||||
else:
|
||||
audio_array = audio
|
||||
|
||||
# Ensure audio is the right sample rate
|
||||
sampling_rate = processor.feature_extractor.sampling_rate
|
||||
|
||||
sys.stderr.write("50%\n")
|
||||
|
||||
# Process audio in chunks for progress reporting
|
||||
inputs = processor(
|
||||
audio_array,
|
||||
sampling_rate=sampling_rate,
|
||||
return_tensors="pt",
|
||||
padding=True
|
||||
)
|
||||
inputs = {k: v.to(device) for k, v in inputs.items()}
|
||||
|
||||
sys.stderr.write("75%\n")
|
||||
|
||||
# Run inference
|
||||
with torch.no_grad():
|
||||
outputs = model(**inputs).logits
|
||||
|
||||
# Decode
|
||||
ids = torch.argmax(outputs, dim=-1)[0]
|
||||
transcription = processor.decode(ids)
|
||||
|
||||
sys.stderr.write("100%\n")
|
||||
|
||||
# Calculate approximate duration for segment
|
||||
duration = len(audio_array) / sampling_rate if isinstance(audio_array, np.ndarray) else 0
|
||||
|
||||
# Return in same format as Whisper for consistency
|
||||
# MMS doesn't provide word-level timestamps, so we return a single segment
|
||||
return {
|
||||
"text": transcription,
|
||||
"segments": [{
|
||||
"start": 0,
|
||||
"end": duration,
|
||||
"text": transcription.strip(),
|
||||
"translation": ""
|
||||
}] if transcription.strip() else []
|
||||
}
|
||||
|
||||
|
||||
# Alias for backward compatibility
|
||||
TransformersWhisper = TransformersTranscriber
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,13 @@ class Application(QApplication):
|
|||
)
|
||||
if force_cpu_enabled:
|
||||
os.environ["BUZZ_FORCE_CPU"] = "true"
|
||||
|
||||
# Set BUZZ_REDUCE_GPU_MEMORY environment variable if Reduce GPU RAM setting is enabled
|
||||
reduce_gpu_memory_enabled = self.settings.value(
|
||||
key=Settings.Key.REDUCE_GPU_MEMORY, default_value=False
|
||||
)
|
||||
if reduce_gpu_memory_enabled:
|
||||
os.environ["BUZZ_REDUCE_GPU_MEMORY"] = "true"
|
||||
|
||||
font_size = self.settings.value(
|
||||
key=Settings.Key.FONT_SIZE, default_value=self.font().pointSize()
|
||||
|
|
|
|||
|
|
@ -188,6 +188,20 @@ class GeneralPreferencesWidget(QWidget):
|
|||
|
||||
layout.addRow(_("Live recording mode"), self.recording_transcriber_mode)
|
||||
|
||||
self.reduce_gpu_memory_enabled = self.settings.value(
|
||||
key=Settings.Key.REDUCE_GPU_MEMORY, default_value=False
|
||||
)
|
||||
|
||||
self.reduce_gpu_memory_checkbox = QCheckBox(_("Use 8-bit quantization to reduce memory usage"))
|
||||
self.reduce_gpu_memory_checkbox.setChecked(self.reduce_gpu_memory_enabled)
|
||||
self.reduce_gpu_memory_checkbox.setObjectName("ReduceGPUMemoryCheckbox")
|
||||
self.reduce_gpu_memory_checkbox.setToolTip(
|
||||
_("Applies to Huggingface and Faster Whisper models. "
|
||||
"Reduces GPU memory usage but may slightly decrease transcription quality.")
|
||||
)
|
||||
self.reduce_gpu_memory_checkbox.stateChanged.connect(self.on_reduce_gpu_memory_changed)
|
||||
layout.addRow(_("Reduce GPU RAM"), self.reduce_gpu_memory_checkbox)
|
||||
|
||||
self.force_cpu_enabled = self.settings.value(
|
||||
key=Settings.Key.FORCE_CPU, default_value=False
|
||||
)
|
||||
|
|
@ -295,12 +309,23 @@ class GeneralPreferencesWidget(QWidget):
|
|||
import os
|
||||
self.force_cpu_enabled = state == 2
|
||||
self.settings.set_value(Settings.Key.FORCE_CPU, self.force_cpu_enabled)
|
||||
|
||||
|
||||
if self.force_cpu_enabled:
|
||||
os.environ["BUZZ_FORCE_CPU"] = "true"
|
||||
else:
|
||||
os.environ.pop("BUZZ_FORCE_CPU", None)
|
||||
|
||||
def on_reduce_gpu_memory_changed(self, state: int):
|
||||
import os
|
||||
self.reduce_gpu_memory_enabled = state == 2
|
||||
self.settings.set_value(Settings.Key.REDUCE_GPU_MEMORY, self.reduce_gpu_memory_enabled)
|
||||
|
||||
if self.reduce_gpu_memory_enabled:
|
||||
os.environ["BUZZ_REDUCE_GPU_MEMORY"] = "true"
|
||||
else:
|
||||
os.environ.pop("BUZZ_REDUCE_GPU_MEMORY", None)
|
||||
|
||||
|
||||
class ValidateOpenAIApiKeyJob(QRunnable):
|
||||
class Signals(QObject):
|
||||
success = pyqtSignal()
|
||||
|
|
|
|||
|
|
@ -64,7 +64,8 @@ class HuggingFaceSearchLineEdit(LineEdit):
|
|||
|
||||
def focusInEvent(self, event):
|
||||
super().focusInEvent(event)
|
||||
self.clear()
|
||||
# Defer selectAll to run after mouse events are processed
|
||||
QTimer.singleShot(0, self.selectAll)
|
||||
|
||||
def on_text_edited(self, text: str):
|
||||
self.model_selected.emit(text)
|
||||
|
|
|
|||
48
buzz/widgets/transcriber/mms_language_line_edit.py
Normal file
48
buzz/widgets/transcriber/mms_language_line_edit.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
from typing import Optional
|
||||
|
||||
from PyQt6.QtCore import pyqtSignal
|
||||
from PyQt6.QtWidgets import QWidget, QSizePolicy
|
||||
|
||||
from buzz.locale import _
|
||||
from buzz.widgets.line_edit import LineEdit
|
||||
|
||||
|
||||
class MMSLanguageLineEdit(LineEdit):
|
||||
"""Text input for MMS language codes (ISO 639-3).
|
||||
|
||||
MMS models support 1000+ languages using ISO 639-3 codes (3 letters).
|
||||
Examples: eng (English), fra (French), deu (German), spa (Spanish)
|
||||
"""
|
||||
|
||||
languageChanged = pyqtSignal(str)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
default_language: str = "eng",
|
||||
parent: Optional[QWidget] = None
|
||||
):
|
||||
super().__init__(default_language, parent)
|
||||
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
||||
self.setPlaceholderText(_("e.g., eng, fra, deu"))
|
||||
self.setToolTip(
|
||||
_("Enter an ISO 639-3 language code (3 letters).\n"
|
||||
"Examples: eng (English), fra (French), deu (German),\n"
|
||||
"spa (Spanish), lav (Latvian)")
|
||||
)
|
||||
self.setMaxLength(10) # Allow some flexibility for edge cases
|
||||
self.setMinimumWidth(100)
|
||||
|
||||
self.textChanged.connect(self._on_text_changed)
|
||||
|
||||
def _on_text_changed(self, text: str):
|
||||
"""Emit language changed signal with cleaned text."""
|
||||
cleaned = text.strip().lower()
|
||||
self.languageChanged.emit(cleaned)
|
||||
|
||||
def language(self) -> str:
|
||||
"""Get the current language code."""
|
||||
return self.text().strip().lower()
|
||||
|
||||
def setLanguage(self, language: str):
|
||||
"""Set the language code."""
|
||||
self.setText(language.strip().lower() if language else "eng")
|
||||
|
|
@ -10,7 +10,7 @@ from PyQt6.QtWidgets import QGroupBox, QWidget, QFormLayout, QComboBox, QLabel,
|
|||
from buzz.locale import _
|
||||
from buzz.settings.settings import Settings
|
||||
from buzz.widgets.icon import INFO_ICON_PATH
|
||||
from buzz.model_loader import ModelType, WhisperModelSize, get_whisper_cpp_file_path
|
||||
from buzz.model_loader import ModelType, WhisperModelSize, get_whisper_cpp_file_path, is_mms_model
|
||||
from buzz.transcriber.transcriber import TranscriptionOptions, Task
|
||||
from buzz.widgets.model_type_combo_box import ModelTypeComboBox
|
||||
from buzz.widgets.openai_api_key_line_edit import OpenAIAPIKeyLineEdit
|
||||
|
|
@ -20,6 +20,7 @@ from buzz.widgets.transcriber.hugging_face_search_line_edit import (
|
|||
HuggingFaceSearchLineEdit,
|
||||
)
|
||||
from buzz.widgets.transcriber.languages_combo_box import LanguagesComboBox
|
||||
from buzz.widgets.transcriber.mms_language_line_edit import MMSLanguageLineEdit
|
||||
from buzz.widgets.transcriber.tasks_combo_box import TasksComboBox
|
||||
|
||||
|
||||
|
|
@ -87,6 +88,13 @@ class TranscriptionOptionsGroupBox(QGroupBox):
|
|||
)
|
||||
self.languages_combo_box.languageChanged.connect(self.on_language_changed)
|
||||
|
||||
# MMS language input (text field for ISO 639-3 codes)
|
||||
self.mms_language_line_edit = MMSLanguageLineEdit(
|
||||
default_language="eng", parent=self
|
||||
)
|
||||
self.mms_language_line_edit.languageChanged.connect(self.on_mms_language_changed)
|
||||
self.mms_language_line_edit.setVisible(False)
|
||||
|
||||
self.advanced_settings_button = AdvancedSettingsButton(self)
|
||||
self.advanced_settings_button.clicked.connect(self.open_advanced_settings)
|
||||
|
||||
|
|
@ -115,6 +123,7 @@ class TranscriptionOptionsGroupBox(QGroupBox):
|
|||
self.form_layout.addRow(_("Api Key:"), self.openai_access_token_edit)
|
||||
self.form_layout.addRow(_("Task:"), self.tasks_combo_box)
|
||||
self.form_layout.addRow(_("Language:"), self.languages_combo_box)
|
||||
self.form_layout.addRow(_("Language:"), self.mms_language_line_edit)
|
||||
|
||||
self.reset_visible_rows()
|
||||
|
||||
|
|
@ -133,6 +142,14 @@ class TranscriptionOptionsGroupBox(QGroupBox):
|
|||
self.transcription_options.language = language
|
||||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
|
||||
def on_mms_language_changed(self, language: str):
|
||||
"""Handle MMS language code changes."""
|
||||
if language == "":
|
||||
language = "eng" # Default to English for MMS
|
||||
|
||||
self.transcription_options.language = language
|
||||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
|
||||
def on_task_changed(self, task: Task):
|
||||
self.transcription_options.task = task
|
||||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
|
|
@ -229,6 +246,9 @@ class TranscriptionOptionsGroupBox(QGroupBox):
|
|||
self.transcription_options.model.model_type == ModelType.WHISPER_CPP
|
||||
)
|
||||
|
||||
# Update language widget visibility (MMS vs Whisper)
|
||||
self._update_language_widget_visibility()
|
||||
|
||||
def on_model_type_changed(self, model_type: ModelType):
|
||||
self.transcription_options.model.model_type = model_type
|
||||
if not model_type.supports_initial_prompt:
|
||||
|
|
@ -254,3 +274,34 @@ class TranscriptionOptionsGroupBox(QGroupBox):
|
|||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
|
||||
self.settings.save_custom_model_id(self.transcription_options.model)
|
||||
|
||||
# Update language widget visibility based on whether this is an MMS model
|
||||
self._update_language_widget_visibility()
|
||||
|
||||
def _update_language_widget_visibility(self):
|
||||
"""Update language widget visibility based on whether the selected model is MMS."""
|
||||
model_type = self.transcription_options.model.model_type
|
||||
model_id = self.transcription_options.model.hugging_face_model_id
|
||||
|
||||
# Check if this is an MMS model
|
||||
is_mms = (model_type == ModelType.HUGGING_FACE and is_mms_model(model_id))
|
||||
|
||||
# Show MMS language input for MMS models, show dropdown for others
|
||||
self.form_layout.setRowVisible(self.mms_language_line_edit, is_mms)
|
||||
self.form_layout.setRowVisible(self.languages_combo_box, not is_mms)
|
||||
|
||||
# Sync the language value when switching between MMS and non-MMS
|
||||
if is_mms:
|
||||
# When switching to MMS, use the MMS language input value
|
||||
mms_lang = self.mms_language_line_edit.language()
|
||||
if mms_lang:
|
||||
self.transcription_options.language = mms_lang
|
||||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
else:
|
||||
# When switching from MMS to a regular model, use the dropdown's current value
|
||||
# This prevents invalid MMS language codes (like "eng") being used with Whisper
|
||||
current_index = self.languages_combo_box.currentIndex()
|
||||
dropdown_lang = self.languages_combo_box.languages[current_index][0]
|
||||
if self.transcription_options.language != dropdown_lang:
|
||||
self.transcription_options.language = dropdown_lang if dropdown_lang else None
|
||||
self.transcription_options_changed.emit(self.transcription_options)
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ class TranscriptionViewModeToolButton(QToolButton):
|
|||
self.setIcon(VisibilityIcon(self))
|
||||
self.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon)
|
||||
self.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
|
||||
self.setMinimumWidth(80)
|
||||
|
||||
translation.connect(self.on_translation_available)
|
||||
|
||||
|
|
|
|||
|
|
@ -267,6 +267,7 @@ class TranscriptionViewerWidget(QWidget):
|
|||
export_tool_button.setToolButtonStyle(
|
||||
Qt.ToolButtonStyle.ToolButtonTextBesideIcon
|
||||
)
|
||||
export_tool_button.setMinimumWidth(100)
|
||||
|
||||
export_transcription_menu = ExportTranscriptionMenu(
|
||||
transcription,
|
||||
|
|
@ -1124,6 +1125,7 @@ class TranscriptionViewerWidget(QWidget):
|
|||
if self.view_mode == ViewMode.TIMESTAMPS:
|
||||
self.text_display_box.hide()
|
||||
self.table_widget.show()
|
||||
self.media_splitter.show()
|
||||
if self.current_media_player:
|
||||
self.current_media_player.show()
|
||||
# Show playback controls in timestamps mode
|
||||
|
|
@ -1149,6 +1151,7 @@ class TranscriptionViewerWidget(QWidget):
|
|||
self.text_display_box.setPlainText(combined_text.strip())
|
||||
self.text_display_box.show()
|
||||
self.table_widget.hide()
|
||||
self.media_splitter.hide()
|
||||
if self.current_media_player:
|
||||
self.current_media_player.hide()
|
||||
# Hide playback controls in text mode
|
||||
|
|
@ -1164,6 +1167,7 @@ class TranscriptionViewerWidget(QWidget):
|
|||
)
|
||||
self.text_display_box.show()
|
||||
self.table_widget.hide()
|
||||
self.media_splitter.hide()
|
||||
if self.current_media_player:
|
||||
self.current_media_player.hide()
|
||||
# Hide playback controls in translation mode
|
||||
|
|
@ -1494,7 +1498,7 @@ class TranscriptionViewerWidget(QWidget):
|
|||
if self.currently_selected_segment is None:
|
||||
self.highlight_table_match(0)
|
||||
|
||||
if current_segment_index == 0 and segments[1]:
|
||||
if current_segment_index == 0 and len(segments) > 1:
|
||||
self.highlight_table_match(1)
|
||||
|
||||
self.highlight_table_match(current_segment_index)
|
||||
|
|
|
|||
|
|
@ -37,6 +37,12 @@ Model size to use will depend on your hardware and use case. Smaller models will
|
|||
|
||||
When choosing among large models consider the following. "Large" is the first released older model, "Large-V2" is later updated model with better accuracy, for some languages considered the most robust and stable. "Large-V3" is the latest model with the best accuracy in many cases, but some times can hallucinate or invent words that were never in the audio. "Turbo" model tries to get a good balance between speed and accuracy. The only sure way to know what model best suits your needs is to test them all in your language.
|
||||
|
||||
In addition to choosing an appropriate model size you also can choose whisper type.
|
||||
- **Whisper** is initial OpenAI implementation, it is accurate but slow and requires a lot of RAM.
|
||||
- Faster **Whisper** is an optimized implementation, it is orders of magnitude faster than regular Whisper and requires less RAM. Use this option if you have an Nvidia GPU with at least 6GB of VRAM.
|
||||
- **Whisper.cpp** is optimized C++ implementation, it quite fast and efficient and will use any brand of GPU. Whisper.cpp is capable of running real time transcription even on a modern laptop with integrated GPU. It can also run on CPU only. Use this option if you do not have Nvidia GPU.
|
||||
- **HuggingFace** option is a `Transformers` implementation and is good in that it supports wide range of custom models that may be optimized for a particular language. This option also supports [MMS](https://ai.meta.com/blog/multilingual-model-speech-recognition/) family of models from Meta AI that support over 1000 of worlds languages as well as [PEFT](https://github.com/huggingface/peft) adjustments to Whisper models.
|
||||
|
||||
### 5. How to get GPU acceleration for faster transcription?
|
||||
|
||||
On Linux GPU acceleration is supported out of the box on Nvidia GPUs. If you still get any issues install [CUDA 12](https://developer.nvidia.com/cuda-downloads), [cuBLASS](https://developer.nvidia.com/cublas) and [cuDNN](https://developer.nvidia.com/cudnn).
|
||||
|
|
|
|||
|
|
@ -4,26 +4,17 @@ sidebar_position: 2
|
|||
---
|
||||
|
||||
To install Buzz, download the [latest version](https://github.com/chidiwilliams/buzz/releases/latest) for your operating
|
||||
system. Buzz is available on **Mac** (Intel), **Windows**, and **Linux**. (For Apple Silicon, please see
|
||||
the [App Store version](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200).)
|
||||
system. Buzz is available on **Mac** (Intel), **Windows**, and **Linux**.
|
||||
|
||||
## macOS (Intel, macOS 11.7 and later)
|
||||
### macOS
|
||||
|
||||
Install via [brew](https://brew.sh/):
|
||||
Download the `.dmg` from the [SourceForge](https://sourceforge.net/projects/buzz-captions/files/).
|
||||
|
||||
```shell
|
||||
brew install --cask buzz
|
||||
```
|
||||
### Windows
|
||||
|
||||
Alternatively, download and run the `Buzz-x.y.z.dmg` file.
|
||||
Get the installation files from the [SourceForge](https://sourceforge.net/projects/buzz-captions/files/).
|
||||
|
||||
For Mac Silicon (and for a better experience on Mac Intel),
|
||||
download [Buzz Captions](https://apps.apple.com/us/app/buzz-captions/id6446018936?mt=12&itsct=apps_box_badge&itscg=30200)
|
||||
on the App Store.
|
||||
|
||||
## Windows (Windows 10 and later)
|
||||
|
||||
Download and run the `Buzz-x.y.z.exe` file.
|
||||
App is not signed, you will get a warning when you install it. Select `More info` -> `Run anyway`.
|
||||
|
||||
## Linux
|
||||
|
||||
|
|
@ -49,8 +40,6 @@ Alternatively, on Ubuntu 20.04 and later, install the dependencies:
|
|||
sudo apt-get install libportaudio2
|
||||
```
|
||||
|
||||
Then, download and extract the `Buzz-x.y.z-unix.tar.gz` file
|
||||
|
||||
## PyPI
|
||||
|
||||
```shell
|
||||
|
|
|
|||
|
|
@ -109,6 +109,8 @@ Defaults to [user_cache_dir](https://pypi.org/project/platformdirs/).
|
|||
|
||||
**BUZZ_FORCE_CPU** - Will force Buzz to use CPU and not GPU, useful for setups with older GPU if that is slower than GPU or GPU has issues. Example usage `BUZZ_FORCE_CPU=true`. Available since `1.2.1`
|
||||
|
||||
**BUZZ_REDUCE_GPU_MEMORY** - Will use 8bit quantization for Huggingface adn Faster Whisper transcriptions to reduce required GPU memory. Example usage `BUZZ_REDUCE_GPU_MEMORY=true`. Available since `1.4.0`
|
||||
|
||||
**BUZZ_MERGE_REGROUP_RULE** - Custom regroup merge rule to use when combining transcripts with word-level timings. More information on available options [in stable-ts repo](https://github.com/jianfch/stable-ts?tab=readme-ov-file#regrouping-methods). Available since `1.3.0`
|
||||
|
||||
**BUZZ_DISABLE_TELEMETRY** - Buzz collects basic OS name and architecture usage statistics to better focus development efforts. This variable lets disable collection of these statistics. Example usage `BUZZ_DISABLE_TELEMETRY=true`. Available since `1.3.0`
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ dependencies = [
|
|||
"openai-whisper==20250625",
|
||||
"transformers>=4.53,<5",
|
||||
"accelerate>=1.12.0,<2",
|
||||
"peft>=0.14.0,<1",
|
||||
# Overriden in uv.tool section below to ensure CUDA 12.9 compatibility
|
||||
# Skip on Intel Macs (x86_64), use 0.49.0 on ARM Macs, 0.45.0+ elsewhere
|
||||
"bitsandbytes>=0.45.0; sys_platform != 'darwin' or platform_machine != 'x86_64'",
|
||||
"polib>=1.2.0,<2",
|
||||
"srt-equalizer>=0.1.10,<0.2",
|
||||
# For Intel macOS (x86_64) - use older versions that support Intel
|
||||
|
|
@ -79,6 +83,9 @@ dependencies = [
|
|||
"demucs",
|
||||
"certifi==2025.11.12",
|
||||
"torchcodec>=0.9.0; sys_platform != 'darwin' or platform_machine != 'x86_64'",
|
||||
"torch>=2.2.2",
|
||||
"torchaudio>=2.2.2",
|
||||
"datasets>=4.4.1",
|
||||
]
|
||||
repository = "https://github.com/chidiwilliams/buzz"
|
||||
documentation = "https://chidiwilliams.github.io/buzz/docs"
|
||||
|
|
@ -115,6 +122,14 @@ default-groups = [
|
|||
"build",
|
||||
]
|
||||
|
||||
# Should be removed after nemo-toolkit update to 2.6.0
|
||||
# Forcing a CUDA 12.9 compatable bitsandbytes version
|
||||
# ARM Macs use 0.49.0, others use 0.47.0 (Intel Macs skip entirely via marker)
|
||||
override-dependencies = [
|
||||
"bitsandbytes==0.49.0; sys_platform == 'darwin' and platform_machine == 'arm64'",
|
||||
"bitsandbytes==0.47.0; sys_platform != 'darwin'",
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
demucs = { path = "demucs_repo", editable = true }
|
||||
torch = [
|
||||
|
|
|
|||
|
|
@ -64,6 +64,25 @@
|
|||
<content_rating type="oars-1.1"/>
|
||||
|
||||
<releases>
|
||||
<release version="1.4.0" date="2025-12-20">
|
||||
<url type="details">https://github.com/chidiwilliams/buzz/releases/tag/v1.4.0</url>
|
||||
<description>
|
||||
<p>Adding speaker identification on transcriptions and video support for transcription viewer, improvements to transcription table and support for over 1000 of worlds languages via MMS models.</p>
|
||||
<p>Release details:</p>
|
||||
<ul>
|
||||
<li>Speaker identification on finished transcripts</li>
|
||||
<li>Support for video in transcription viewer</li>
|
||||
<li>Ability to add notes and restart transcriptions in main table</li>
|
||||
<li>Adding support for more than 1000 languages via MMS model family when transcribing with Huggingface transcription type</li>
|
||||
<li>Adding support for PEFT models when transcribing with Huggingface transcription type</li>
|
||||
<li>Adding support for 8bit quantization for Huggingface and faster Whisper transcriptions</li>
|
||||
<li>Updated libraries and dependencies to support latest GPUs</li>
|
||||
<li>Support for secrets portal for snap packages on Linux</li>
|
||||
<li>Ability to specify model to use when transcribing with OpenAI API</li>
|
||||
<li>Ability to access application logs from About screen</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.3.3" date="2025-11-09">
|
||||
<url type="details">https://github.com/chidiwilliams/buzz/releases/tag/v1.3.3</url>
|
||||
<description>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,19 @@
|
|||
import multiprocessing
|
||||
import os
|
||||
import platform
|
||||
import random
|
||||
import string
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
# Set multiprocessing to use 'spawn' instead of 'fork' on Linux
|
||||
# This is required because Qt creates threads early, and forking a multi-threaded
|
||||
# process can lead to deadlocks. The main application sets this in buzz/buzz.py.
|
||||
if platform.system() != "Windows":
|
||||
try:
|
||||
multiprocessing.set_start_method("spawn", force=True)
|
||||
except RuntimeError:
|
||||
pass # Already set
|
||||
from PyQt6.QtSql import QSqlDatabase
|
||||
from _pytest.fixtures import SubRequest
|
||||
|
||||
|
|
|
|||
46
tests/transcriber/transformers_whisper_test.py
Normal file
46
tests/transcriber/transformers_whisper_test.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import os
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
|
||||
from buzz.transformers_whisper import TransformersTranscriber
|
||||
|
||||
|
||||
class TestGetMmsRepoId:
|
||||
"""Tests for TransformersTranscriber._get_mms_repo_id method."""
|
||||
|
||||
def test_repo_id_returned_as_is(self):
|
||||
"""Test that a HuggingFace repo ID is returned unchanged."""
|
||||
transcriber = TransformersTranscriber("facebook/mms-1b-all")
|
||||
with patch("os.path.exists", return_value=False):
|
||||
assert transcriber._get_mms_repo_id() == "facebook/mms-1b-all"
|
||||
|
||||
def test_linux_cache_path(self):
|
||||
"""Test extraction from Linux-style cache path."""
|
||||
linux_path = "/home/user/.cache/Buzz/models/models--facebook--mms-1b-all/snapshots/abc123"
|
||||
transcriber = TransformersTranscriber(linux_path)
|
||||
with patch("os.path.exists", return_value=True), \
|
||||
patch("buzz.transformers_whisper.os.sep", "/"):
|
||||
assert transcriber._get_mms_repo_id() == "facebook/mms-1b-all"
|
||||
|
||||
def test_windows_cache_path(self):
|
||||
"""Test extraction from Windows-style cache path."""
|
||||
windows_path = r"C:\Users\user\.cache\Buzz\models\models--facebook--mms-1b-all\snapshots\abc123"
|
||||
transcriber = TransformersTranscriber(windows_path)
|
||||
with patch("os.path.exists", return_value=True), \
|
||||
patch("buzz.transformers_whisper.os.sep", "\\"):
|
||||
assert transcriber._get_mms_repo_id() == "facebook/mms-1b-all"
|
||||
|
||||
def test_fallback_returns_model_id(self):
|
||||
"""Test that model_id is returned as fallback when pattern not matched."""
|
||||
transcriber = TransformersTranscriber("some-local-model")
|
||||
with patch("os.path.exists", return_value=True):
|
||||
assert transcriber._get_mms_repo_id() == "some-local-model"
|
||||
|
||||
def test_nested_org_name(self):
|
||||
"""Test extraction with different org/model names."""
|
||||
linux_path = "/home/user/.cache/Buzz/models/models--openai--whisper-large-v3/snapshots/xyz"
|
||||
transcriber = TransformersTranscriber(linux_path)
|
||||
with patch("os.path.exists", return_value=True), \
|
||||
patch("buzz.transformers_whisper.os.sep", "/"):
|
||||
assert transcriber._get_mms_repo_id() == "openai/whisper-large-v3"
|
||||
|
|
@ -3,7 +3,6 @@ import logging
|
|||
import os
|
||||
import platform
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
from typing import List
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import platform
|
||||
import pytest
|
||||
|
||||
from buzz.transformers_whisper import TransformersWhisper
|
||||
from buzz.transformers_whisper import TransformersTranscriber
|
||||
from tests.audio import test_audio_path
|
||||
|
||||
|
||||
class TestTransformersWhisper:
|
||||
class TestTransformersTranscriber:
|
||||
@pytest.mark.skipif(
|
||||
platform.system() == "Darwin",
|
||||
reason="Not supported on Darwin",
|
||||
)
|
||||
def test_should_transcribe(self):
|
||||
model = TransformersWhisper("openai/whisper-tiny")
|
||||
model = TransformersTranscriber("openai/whisper-tiny")
|
||||
result = model.transcribe(
|
||||
audio=test_audio_path, language="fr", task="transcribe"
|
||||
)
|
||||
235
uv.lock
generated
235
uv.lock
generated
|
|
@ -10,6 +10,12 @@ resolution-markers = [
|
|||
"platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'",
|
||||
]
|
||||
|
||||
[manifest]
|
||||
overrides = [
|
||||
{ name = "bitsandbytes", marker = "sys_platform != 'darwin'", specifier = "==0.47.0" },
|
||||
{ name = "bitsandbytes", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==0.49.0" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "absl-py"
|
||||
version = "2.3.1"
|
||||
|
|
@ -31,8 +37,8 @@ dependencies = [
|
|||
{ name = "pyyaml" },
|
||||
{ name = "safetensors" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/4a/8e/ac2a9566747a93f8be36ee08532eb0160558b07630a081a6056a9f89bf1d/accelerate-1.12.0.tar.gz", hash = "sha256:70988c352feb481887077d2ab845125024b2a137a5090d6d7a32b57d03a45df6", size = 398399, upload-time = "2025-11-21T11:27:46.973Z" }
|
||||
wheels = [
|
||||
|
|
@ -53,13 +59,13 @@ name = "aiohttp"
|
|||
version = "3.13.2"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "aiohappyeyeballs", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "aiosignal", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "attrs", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "frozenlist", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "multidict", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "propcache", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "yarl", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "aiohappyeyeballs" },
|
||||
{ name = "aiosignal" },
|
||||
{ name = "attrs" },
|
||||
{ name = "frozenlist" },
|
||||
{ name = "multidict" },
|
||||
{ name = "propcache" },
|
||||
{ name = "yarl" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1c/ce/3b83ebba6b3207a7135e5fcaba49706f8a4b6008153b4e30540c982fae26/aiohttp-3.13.2.tar.gz", hash = "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca", size = 7837994, upload-time = "2025-10-28T20:59:39.937Z" }
|
||||
wheels = [
|
||||
|
|
@ -87,8 +93,8 @@ name = "aiosignal"
|
|||
version = "1.4.0"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "frozenlist", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "frozenlist" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" }
|
||||
wheels = [
|
||||
|
|
@ -224,15 +230,37 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "bitsandbytes"
|
||||
version = "0.46.0"
|
||||
version = "0.47.0"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
resolution-markers = [
|
||||
"(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')",
|
||||
"sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||
"platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "numpy", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/72/27/ec6ee3408e09e01ab05db07af5a97dc76db7bc18824cf5f5dbc98e1e08a4/bitsandbytes-0.46.0-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:ef38883cfd26f36a0dfff1715f620f87cee3813431f33e10e9658205160cb89b", size = 67047276, upload-time = "2025-05-27T21:25:31.299Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f3/06/2ef5f6b28d8fa442c670b5acc1eb09dd57d4edb00b435b35529c3f09936c/bitsandbytes-0.46.0-py3-none-win_amd64.whl", hash = "sha256:121820a6df80ae3b7e361f7ef193279c3204c361a7e21eb43b5ffa7293403979", size = 66452401, upload-time = "2025-05-27T21:25:35.552Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/aa/eb/477d6b5602f469c7305fd43eec71d890c39909f615c1d7138f6e7d226eff/bitsandbytes-0.47.0-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:2f805b76891a596025e9e13318b675d08481b9ee650d65e5d2f9d844084c6521", size = 30004641, upload-time = "2025-08-11T18:51:20.524Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9c/40/91f1a5a694f434bc13cba160045fdc4e867032e627b001bf411048fefd9c/bitsandbytes-0.47.0-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:68f3fffd494a47ed1fd7593bfc5dd2ac69b68260599b71b4c4b3a32f90f3b184", size = 61284639, upload-time = "2025-08-11T18:51:23.581Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/18/a9/e07a227f1cd6562844cea2f05ee576b0991a9a91f45965c06034178ba0f6/bitsandbytes-0.47.0-py3-none-win_amd64.whl", hash = "sha256:4880a6d42ca9628b5a571c8cc3093dc3f5f52511e5a9e47d52d569807975531a", size = 60725121, upload-time = "2025-08-11T18:51:27.543Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitsandbytes"
|
||||
version = "0.49.0"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
resolution-markers = [
|
||||
"platform_machine == 'arm64' and sys_platform == 'darwin'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "numpy", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "packaging", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/8e/96/2b825cb874477a26478df0ce8ce3550abe81af1c7bcbc47871f0619b120c/bitsandbytes-0.49.0-py3-none-macosx_14_0_arm64.whl", hash = "sha256:17d5b57e6d51b78bcfc07da0e93db061181b25bffabfafe101dd9b75c2710872", size = 129838, upload-time = "2025-12-11T20:50:39.645Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -250,6 +278,8 @@ version = "1.4.0"
|
|||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "accelerate" },
|
||||
{ name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple/" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "certifi" },
|
||||
{ name = "cmake" },
|
||||
{ name = "coverage" },
|
||||
|
|
@ -257,6 +287,7 @@ dependencies = [
|
|||
{ name = "ctranslate2", version = "4.6.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' or sys_platform != 'darwin'" },
|
||||
{ name = "darkdetect" },
|
||||
{ name = "dataclasses-json" },
|
||||
{ name = "datasets" },
|
||||
{ name = "demucs" },
|
||||
{ name = "diffq" },
|
||||
{ name = "dora-search" },
|
||||
|
|
@ -285,6 +316,7 @@ dependencies = [
|
|||
{ name = "openai" },
|
||||
{ name = "openai-whisper" },
|
||||
{ name = "openunmix" },
|
||||
{ name = "peft" },
|
||||
{ name = "platformdirs" },
|
||||
{ name = "polib" },
|
||||
{ name = "posthog" },
|
||||
|
|
@ -299,11 +331,11 @@ dependencies = [
|
|||
{ name = "stable-ts" },
|
||||
{ name = "submitit" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torchcodec", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "tqdm" },
|
||||
|
|
@ -340,6 +372,7 @@ dev = [
|
|||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "accelerate", specifier = ">=1.12.0,<2" },
|
||||
{ name = "bitsandbytes", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'", specifier = ">=0.45.0" },
|
||||
{ name = "certifi", specifier = "==2025.11.12" },
|
||||
{ name = "cmake", specifier = ">=4.2.0,<5" },
|
||||
{ name = "coverage", specifier = "==7.12.0" },
|
||||
|
|
@ -348,6 +381,7 @@ requires-dist = [
|
|||
{ name = "ctranslate2", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==4.3.1" },
|
||||
{ name = "darkdetect", specifier = ">=0.8.0,<0.9" },
|
||||
{ name = "dataclasses-json", specifier = ">=0.6.4,<0.7" },
|
||||
{ name = "datasets", specifier = ">=4.4.1" },
|
||||
{ name = "demucs", editable = "demucs_repo" },
|
||||
{ name = "diffq", specifier = ">=0.2.4,<0.3" },
|
||||
{ name = "dora-search", specifier = ">=0.1.12,<0.2" },
|
||||
|
|
@ -376,6 +410,7 @@ requires-dist = [
|
|||
{ name = "openai", specifier = ">=1.14.2,<2" },
|
||||
{ name = "openai-whisper", specifier = "==20250625" },
|
||||
{ name = "openunmix", specifier = ">=1.3.0,<2" },
|
||||
{ name = "peft", specifier = ">=0.14.0,<1" },
|
||||
{ name = "platformdirs", specifier = ">=4.2.1,<5" },
|
||||
{ name = "polib", specifier = ">=1.2.0,<2" },
|
||||
{ name = "posthog", specifier = ">=3.23.0,<4" },
|
||||
|
|
@ -390,9 +425,13 @@ requires-dist = [
|
|||
{ name = "stable-ts", specifier = ">=2.19.1,<3" },
|
||||
{ name = "submitit", specifier = ">=1.5.2,<2" },
|
||||
{ name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" },
|
||||
{ name = "torch", marker = "sys_platform != 'darwin'", specifier = ">=2.2.2", index = "https://download.pytorch.org/whl/cu129" },
|
||||
{ name = "torch", marker = "sys_platform == 'darwin'", specifier = ">=2.2.2", index = "https://pypi.org/simple/" },
|
||||
{ name = "torch", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple/" },
|
||||
{ name = "torch", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2", index = "https://pypi.org/simple/" },
|
||||
{ name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" },
|
||||
{ name = "torchaudio", marker = "sys_platform != 'darwin'", specifier = ">=2.2.2", index = "https://download.pytorch.org/whl/cu129" },
|
||||
{ name = "torchaudio", marker = "sys_platform == 'darwin'", specifier = ">=2.2.2", index = "https://pypi.org/simple/" },
|
||||
{ name = "torchaudio", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple/" },
|
||||
{ name = "torchaudio", marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'", specifier = "==2.2.2", index = "https://pypi.org/simple/" },
|
||||
{ name = "torchcodec", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'", specifier = ">=0.9.0" },
|
||||
|
|
@ -789,20 +828,20 @@ name = "datasets"
|
|||
version = "4.4.1"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "dill", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "filelock", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "fsspec", extra = ["http"], marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "httpx", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "huggingface-hub", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "multiprocess", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pandas", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pyarrow", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "requests", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "xxhash", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "dill" },
|
||||
{ name = "filelock" },
|
||||
{ name = "fsspec", extra = ["http"] },
|
||||
{ name = "httpx" },
|
||||
{ name = "huggingface-hub" },
|
||||
{ name = "multiprocess" },
|
||||
{ name = "numpy" },
|
||||
{ name = "packaging" },
|
||||
{ name = "pandas" },
|
||||
{ name = "pyarrow" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "requests" },
|
||||
{ name = "tqdm" },
|
||||
{ name = "xxhash" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/93/bf/0dae295d6d1ba0b1a200a9dd216838464b5bbd05da01407cb1330b377445/datasets-4.4.1.tar.gz", hash = "sha256:80322699aa8c0bbbdb7caa87906da689c3c2e29523cff698775c67f28fdab1fc", size = 585341, upload-time = "2025-11-05T16:00:38.162Z" }
|
||||
wheels = [
|
||||
|
|
@ -830,12 +869,12 @@ dependencies = [
|
|||
{ name = "openunmix" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "tqdm" },
|
||||
]
|
||||
|
||||
|
|
@ -879,8 +918,8 @@ dependencies = [
|
|||
{ name = "cython" },
|
||||
{ name = "numpy" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/5a/fd/4c58807bf855c5929ffa6da55f26dd6b9ae462a4193f5e09cc49fbbfd451/diffq-0.2.4.tar.gz", hash = "sha256:049064861e974ebf00d0badab8b324c775037371419eda3150985b9d477b5bd2", size = 157139, upload-time = "2023-05-05T12:39:43.089Z" }
|
||||
|
||||
|
|
@ -926,8 +965,8 @@ dependencies = [
|
|||
{ name = "retrying" },
|
||||
{ name = "submitit" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "treetable" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d5/9d/9a13947db237375486c0690f4741dd2b7e1eee20e0ffcb55dbd1b21cc600/dora_search-0.1.12.tar.gz", hash = "sha256:2956fd2c4c7e4b9a4830e83f0d4cf961be45cfba1a2f0570281e91d15ac516fb", size = 87111, upload-time = "2023-05-23T14:36:24.743Z" }
|
||||
|
|
@ -1098,7 +1137,7 @@ wheels = [
|
|||
|
||||
[package.optional-dependencies]
|
||||
http = [
|
||||
{ name = "aiohttp", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "aiohttp" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1559,8 +1598,8 @@ version = "0.2.7"
|
|||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a1/19/c9e1596b5572c786b93428d0904280e964c930fae7e6c9368ed9e1b63922/julius-0.2.7.tar.gz", hash = "sha256:3c0f5f5306d7d6016fcc95196b274cae6f07e2c9596eed314e4e7641554fbb08", size = 59640, upload-time = "2022-09-19T16:13:34.2Z" }
|
||||
|
||||
|
|
@ -1688,8 +1727,8 @@ dependencies = [
|
|||
{ name = "soundfile" },
|
||||
{ name = "tabulate" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "tqdm" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/2e/fd/32baf46d238f029a22b2c1762fc717ebdb85515fb48bafa395d3de5da0f5/lhotse-1.32.1.tar.gz", hash = "sha256:8b0e946d1bd2c695b09df831ea612913f1a1f103b1aea36a4b43a8778be0a3d5", size = 674412, upload-time = "2025-11-24T16:42:25.511Z" }
|
||||
|
|
@ -1769,8 +1808,8 @@ dependencies = [
|
|||
{ name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pytorch-lightning", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchmetrics", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
|
|
@ -2075,7 +2114,7 @@ name = "multiprocess"
|
|||
version = "0.70.18"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "dill", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "dill" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/72/fd/2ae3826f5be24c6ed87266bc4e59c46ea5b059a103f3d7e7eb76a52aeecb/multiprocess-0.70.18.tar.gz", hash = "sha256:f9597128e6b3e67b23956da07cf3d2e5cba79e2f4e0fba8d7903636663ec6d0d", size = 1798503, upload-time = "2025-04-17T03:11:27.742Z" }
|
||||
wheels = [
|
||||
|
|
@ -2166,8 +2205,8 @@ dependencies = [
|
|||
{ name = "setuptools", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "tensorboard", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "text-unidecode", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "wget", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "wrapt", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
|
|
@ -2179,7 +2218,8 @@ wheels = [
|
|||
|
||||
[package.optional-dependencies]
|
||||
asr = [
|
||||
{ name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" },
|
||||
{ name = "bitsandbytes", version = "0.47.0", source = { registry = "https://pypi.org/simple/" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "bitsandbytes", version = "0.49.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "braceexpand", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "cloudpickle", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "ctc-segmentation", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
|
|
@ -2563,8 +2603,8 @@ dependencies = [
|
|||
{ name = "numpy" },
|
||||
{ name = "tiktoken" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "tqdm" },
|
||||
{ name = "triton", marker = "(platform_machine == 'x86_64' and sys_platform == 'linux') or sys_platform == 'linux2'" },
|
||||
]
|
||||
|
|
@ -2577,12 +2617,12 @@ source = { registry = "https://pypi.org/simple/" }
|
|||
dependencies = [
|
||||
{ name = "numpy" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "tqdm" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/42/ef/4ad54e3ecb1e89f7f7bdb4c7b751e43754e892d3c32a8550e5d0882565df/openunmix-1.3.0.tar.gz", hash = "sha256:cc9245ce728700f5d0b72c67f01be4162777e617cdc47f9b035963afac180fc8", size = 45889, upload-time = "2024-04-16T11:10:47.121Z" }
|
||||
|
|
@ -2679,17 +2719,18 @@ name = "peft"
|
|||
version = "0.18.0"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "accelerate", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "huggingface-hub", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "psutil", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "safetensors", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "transformers", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "accelerate" },
|
||||
{ name = "huggingface-hub" },
|
||||
{ name = "numpy" },
|
||||
{ name = "packaging" },
|
||||
{ name = "psutil" },
|
||||
{ name = "pyyaml" },
|
||||
{ name = "safetensors" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "tqdm" },
|
||||
{ name = "transformers" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/4b/0c/f2938db546ac7fc961ab5917cd50fcf5d0d70b406de93e3faccaa504e152/peft-0.18.0.tar.gz", hash = "sha256:c81c80b2056ab40c23d58ef25f74daab417ac653970718589a11a8af28218588", size = 634141, upload-time = "2025-11-13T11:13:06.603Z" }
|
||||
wheels = [
|
||||
|
|
@ -3324,8 +3365,8 @@ dependencies = [
|
|||
{ name = "lightning-utilities", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "pyyaml", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchmetrics", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "tqdm", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
|
|
@ -3864,12 +3905,12 @@ dependencies = [
|
|||
{ name = "numpy" },
|
||||
{ name = "openai-whisper" },
|
||||
{ name = "torch", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.2.2", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torchaudio", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torchaudio", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "tqdm" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/94/d9/d326f9dbbb7da6806aa8cfc080342e5f78dc33552f4339bdc8a6251d11a3/stable_ts-2.19.1.tar.gz", hash = "sha256:0ecaf1ed93e029839569618d2da9a57b883ad04db21f0680146e0650caaf4f52", size = 189132, upload-time = "2025-08-16T16:53:48.811Z" }
|
||||
|
|
@ -4112,15 +4153,16 @@ version = "2.8.0"
|
|||
source = { registry = "https://pypi.org/simple/" }
|
||||
resolution-markers = [
|
||||
"platform_machine == 'arm64' and sys_platform == 'darwin'",
|
||||
"platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "filelock", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "fsspec", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "jinja2", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "networkx", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "setuptools", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "sympy", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "filelock", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "fsspec", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "jinja2", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "networkx", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "setuptools", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "sympy", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/be/66/5c9a321b325aaecb92d4d1855421e3a055abd77903b7dab6575ca07796db/torch-2.8.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0", size = 73630478, upload-time = "2025-08-06T14:53:57.144Z" },
|
||||
|
|
@ -4134,13 +4176,12 @@ resolution-markers = [
|
|||
"(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')",
|
||||
"sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||
"platform_machine == 'aarch64' and platform_python_implementation == 'CPython' and sys_platform == 'linux'",
|
||||
"platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "filelock", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "fsspec", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "jinja2", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "networkx", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "filelock", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "fsspec", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "jinja2", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "networkx", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
{ name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
{ name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
|
|
@ -4155,10 +4196,10 @@ dependencies = [
|
|||
{ name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
{ name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
{ name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
|
||||
{ name = "setuptools", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "sympy", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "setuptools", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "sympy", marker = "sys_platform != 'darwin'" },
|
||||
{ name = "triton", marker = "sys_platform == 'linux'" },
|
||||
{ name = "typing-extensions", marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "typing-extensions", marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:692fe6e513b667f789a543fa9b1baba58e77a46d5c8629764ca0c00a56823e1f" },
|
||||
|
|
@ -4200,9 +4241,10 @@ version = "2.8.0"
|
|||
source = { registry = "https://pypi.org/simple/" }
|
||||
resolution-markers = [
|
||||
"platform_machine == 'arm64' and sys_platform == 'darwin'",
|
||||
"platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/ac/cc/c2e2a3eb6ee956f73c68541e439916f8146170ea9cc61e72adea5c995312/torchaudio-2.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ddef94bf181e6447cbb05f38beaca8f6c5bb8d2b9ddced1aa3452025b9fc70d3", size = 1856736, upload-time = "2025-08-06T14:58:36.3Z" },
|
||||
|
|
@ -4215,10 +4257,9 @@ source = { registry = "https://download.pytorch.org/whl/cu129" }
|
|||
resolution-markers = [
|
||||
"(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux')",
|
||||
"sys_platform != 'darwin' and sys_platform != 'linux'",
|
||||
"platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin'",
|
||||
]
|
||||
dependencies = [
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (platform_python_implementation != 'CPython' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
]
|
||||
wheels = [
|
||||
{ url = "https://download.pytorch.org/whl/cu129/torchaudio-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:40df9011972519120f284f56e5e7d131d4250ea69653499028d1d30b353f932e" },
|
||||
|
|
@ -4243,8 +4284,8 @@ dependencies = [
|
|||
{ name = "lightning-utilities", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "numpy", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "packaging", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine == 'arm64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'arm64' and platform_machine != 'x86_64') or sys_platform != 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple/" }, marker = "platform_machine != 'x86_64' and sys_platform == 'darwin'" },
|
||||
{ name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/85/2e/48a887a59ecc4a10ce9e8b35b3e3c5cef29d902c4eac143378526e7485cb/torchmetrics-1.8.2.tar.gz", hash = "sha256:cf64a901036bf107f17a524009eea7781c9c5315d130713aeca5747a686fe7a5", size = 580679, upload-time = "2025-09-03T14:00:54.077Z" }
|
||||
wheels = [
|
||||
|
|
@ -4578,9 +4619,9 @@ name = "yarl"
|
|||
version = "1.22.0"
|
||||
source = { registry = "https://pypi.org/simple/" }
|
||||
dependencies = [
|
||||
{ name = "idna", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "multidict", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "propcache", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
|
||||
{ name = "idna" },
|
||||
{ name = "multidict" },
|
||||
{ name = "propcache" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" }
|
||||
wheels = [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue