Adding option to extract speech (#1037)

This commit is contained in:
Raivis Dejus 2025-01-02 12:28:53 +02:00 committed by GitHub
commit a33270bf91
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 642 additions and 229 deletions

View file

@ -33,7 +33,8 @@ class TranscriptionDAO(DAO[Transcription]):
url,
whisper_model_size,
hugging_face_model_id,
word_level_timings
word_level_timings,
extract_speech
) VALUES (
:id,
:export_formats,
@ -48,7 +49,8 @@ class TranscriptionDAO(DAO[Transcription]):
:url,
:whisper_model_size,
:hugging_face_model_id,
:word_level_timings
:word_level_timings,
:extract_speech
)
"""
)
@ -89,6 +91,10 @@ class TranscriptionDAO(DAO[Transcription]):
":word_level_timings",
task.transcription_options.word_level_timings
)
query.bindValue(
":extract_speech",
task.transcription_options.extract_speech
)
if not query.exec():
raise Exception(query.lastError().text())
@ -125,7 +131,8 @@ class TranscriptionDAO(DAO[Transcription]):
url,
whisper_model_size,
hugging_face_model_id,
word_level_timings
word_level_timings,
extract_speech
) VALUES (
:id,
:export_formats,
@ -140,7 +147,8 @@ class TranscriptionDAO(DAO[Transcription]):
:url,
:whisper_model_size,
:hugging_face_model_id,
:word_level_timings
:word_level_timings,
:extract_speech
)
"""
)

View file

@ -17,6 +17,7 @@ class Transcription(Entity):
whisper_model_size: str | None = None
hugging_face_model_id: str | None = None
word_level_timings: str | None = None
extract_speech: str | None = None
language: str | None = None
id: str = field(default_factory=lambda: str(uuid.uuid4()))
error_message: str | None = None

View file

@ -1,6 +1,8 @@
import logging
import multiprocessing
import queue
import demucs.api
from pathlib import Path
from typing import Optional, Tuple, List, Set
from uuid import UUID
@ -53,6 +55,22 @@ class FileTranscriberQueueWorker(QObject):
break
if self.current_task.transcription_options.extract_speech:
def separator_progress_callback(progress):
self.task_progress.emit(self.current_task, int(progress["segment_offset"] * 100) / int(progress["audio_length"] * 100))
separator = demucs.api.Separator(
progress=True,
callback=separator_progress_callback,
)
_, separated = separator.separate_audio_file(Path(self.current_task.file_path))
task_file_path = Path(self.current_task.file_path)
speech_path = task_file_path.with_name(f"{task_file_path.stem}_speech.flac")
demucs.api.save_audio(separated["vocals"], speech_path, samplerate=separator.samplerate)
self.current_task.file_path = str(speech_path)
logging.debug("Starting next transcription task")
model_type = self.current_task.transcription_options.model.model_type

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2023-02-15 05:01+0000\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Language-Team: Catalan <jmas@softcatala.org>\n"
@ -28,7 +28,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr ""
@ -36,7 +36,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
#, fuzzy
msgid "Cancel"
msgstr "Cancel·lat"
@ -216,7 +216,7 @@ msgid "Download failed"
msgstr "Baixat"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Error"
@ -230,7 +230,7 @@ msgid "Stop"
msgstr "Atura"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detecta l'idioma"
@ -303,11 +303,15 @@ msgstr ""
msgid "Instructions for AI:"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Temps amb granularitat de paraula"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr ""
@ -337,7 +341,7 @@ msgstr "Obre una transcripció"
msgid "Cancel Transcription"
msgstr "Cancel·la la transcripció"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Neteja l'historial"
@ -456,53 +460,53 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -568,7 +572,7 @@ msgstr "Ajuda"
msgid "File"
msgstr "Fitxer"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -576,11 +580,11 @@ msgstr ""
"Esteu segur que voleu suprimir les transcripcions seleccionades? Aquesta "
"acció no es pot desfer."
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Selecciona un fitxer d'àudio"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2023-11-09 04:35-0600\n"
"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
"Language-Team: \n"
@ -29,7 +29,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
#, fuzzy
msgid "Cancel"
msgstr "Cancelado"
@ -222,7 +222,7 @@ msgid "Download failed"
msgstr "Descargado"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Error"
@ -239,7 +239,7 @@ msgstr "Detener"
# automatic translation
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Detectar idioma"
@ -322,11 +322,15 @@ msgid "Instructions for AI:"
msgstr ""
# automatic translation
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Tiempos a nivel de palabra"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr ""
@ -361,7 +365,7 @@ msgid "Cancel Transcription"
msgstr "Cancelar transcripción"
# automatic translation
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Vaciar historial"
@ -491,53 +495,53 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -610,7 +614,7 @@ msgid "File"
msgstr "Archivo"
# automatic translation
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -619,11 +623,11 @@ msgstr ""
"no se puede deshacer."
# automatic translation
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Seleccionar archivo de audio"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr ""

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2024-11-24 13:22+0100\n"
"Language-Team: (Italiano) Albano Battistella <albanobattistella@gmail.com>\n"
"Language: it_IT\n"
@ -28,7 +28,7 @@ msgstr "https://esempio.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr "Ok"
@ -36,7 +36,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "Annulla"
@ -218,7 +218,7 @@ msgid "Download failed"
msgstr "Download non riuscito"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Errore"
@ -232,7 +232,7 @@ msgid "Stop"
msgstr "Arresta"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Rileva la lingua"
@ -306,11 +306,15 @@ msgstr "Inserisci le istruzioni per l'IA su come tradurre..."
msgid "Instructions for AI:"
msgstr "Istruzioni per l'AI:"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Tempistiche a livello di parola"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Esporta:"
@ -338,7 +342,7 @@ msgstr "Apri trascrizione"
msgid "Cancel Transcription"
msgstr "Annulla trascrizione"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Elimina la cronologia"
@ -452,54 +456,54 @@ msgstr "Visualizza"
msgid "Timestamps"
msgstr "Timestamp"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr "Esporta"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Tradurre"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr "Ridimensionare"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr "Chiave API richiesta"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr "Inserisci la chiave API OpenAI nelle preferenze"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#, fuzzy
msgid "Resize Options"
msgstr "Ridimensionare"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr "Lunghezza desiderata dei sottotitoli"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -566,7 +570,7 @@ msgstr "Aiuto"
msgid "File"
msgstr "File"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -574,11 +578,11 @@ msgstr ""
"Sei certo di voler eliminare le trascrizioni selezionate? Questa azione non "
"può essere annullata."
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Seleziona file audio"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr "Impossibile salvare la chiave API OpenAI nel portachiavi"

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n"
"Language-Team: \n"
@ -24,7 +24,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr "Ok"
@ -32,7 +32,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "キャンセル"
@ -214,7 +214,7 @@ msgid "Download failed"
msgstr "ダウンロード失敗"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "エラー"
@ -228,7 +228,7 @@ msgid "Stop"
msgstr "停止する"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "自動検出"
@ -300,11 +300,15 @@ msgstr "AIのための翻訳方法の指示を入力..."
msgid "Instructions for AI:"
msgstr "AIへの指示:"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "単語レベルでのタイミング"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "出力形式:"
@ -334,7 +338,7 @@ msgstr "文字起こしを開く"
msgid "Cancel Transcription"
msgstr "文字起こしをキャンセルする"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "履歴を削除する"
@ -448,54 +452,54 @@ msgstr "表示"
msgid "Timestamps"
msgstr "タイムスタンプ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr "出力"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "翻訳"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr "リサイズ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr "APIキーが必要"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr "設定画面でOpenAI APIキーを入力してください"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#, fuzzy
msgid "Resize Options"
msgstr "リサイズ"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr "希望する字幕の長さ"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -562,17 +566,17 @@ msgstr "ヘルプ"
msgid "File"
msgstr "ファイル"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "本当に選択された文字起こしを削除しますか? この操作は元に戻せません。"
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "音声ファイルを選択"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr "OpenAI API キーをkeyringに保存できません"

View file

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"PO-Revision-Date: 2024-12-28 22:32+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2025-01-02 11:46+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@ -30,7 +30,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr "Labi"
@ -38,7 +38,7 @@ msgstr "Labi"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "Atcelt"
@ -222,7 +222,7 @@ msgid "Download failed"
msgstr "Lejupielāde neizdevās"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Kļūda"
@ -236,7 +236,7 @@ msgid "Stop"
msgstr "Apturēt"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Noteikt valodu"
@ -310,11 +310,15 @@ msgstr "Ievadiet tulkošanas norādes mākslīgajam intelektam..."
msgid "Instructions for AI:"
msgstr "Norādes MI:"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Dalīt pa vārdiem"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr "Atdalīt runu"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Eksportēt:"
@ -342,7 +346,7 @@ msgstr "Atvērt transkriptu"
msgid "Cancel Transcription"
msgstr "Atcelt atpazīšanu"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Notīrīt vēsturi"
@ -456,53 +460,53 @@ msgstr "Skats"
msgid "Timestamps"
msgstr "Laiks"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr "Eksportēt"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Tulkot"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr "Mainīt garumu"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr "API atslēgas kļūda"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr "Lūdzu ievadiet OpenAI API atslēgu iestatījumos"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr "Garuma maiņas iestatījumi"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr "Vēlamais teksta garums"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr "Apvienošanas iestatījumi"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr "Apvienot pēc attāluma"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr "Dalīt pie pieturzīmēm"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr "Dalīt pie maksimālā garuma"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr "Apvienot"
@ -567,7 +571,7 @@ msgstr "Palīdzība"
msgid "File"
msgstr "Fails"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -575,11 +579,11 @@ msgstr ""
"Vai tiešām vēlaties dzēst izvēlētos transkriptus? Šī ir neatgriezeniska "
"darbība."
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Izvēlieties audio failu"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr "Neizdevās saglabāt OpenAI API atslēgu atslēgu saišķī"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2024-03-17 20:50+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -29,7 +29,7 @@ msgstr "https://przyklad.pl/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "Anuluj"
@ -222,7 +222,7 @@ msgid "Download failed"
msgstr "Pobrany"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Błąd"
@ -236,7 +236,7 @@ msgid "Stop"
msgstr "Zatrzymaj"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Wykryj język"
@ -309,11 +309,15 @@ msgstr ""
msgid "Instructions for AI:"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Znaczniki dla słów"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr ""
@ -343,7 +347,7 @@ msgstr "Otwórz transkrypt"
msgid "Cancel Transcription"
msgstr "Anuluj transkrypcję"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Wyczyść historię"
@ -462,53 +466,53 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -575,7 +579,7 @@ msgstr "Pomoc"
msgid "File"
msgstr "Plik"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
@ -583,11 +587,11 @@ msgstr ""
"Czy na pewno chcesz usunąć zaznaczone transkrypcje? Tej operacji nie można "
"cofnąć."
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Wybierz plik audio"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr ""

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Yevhen Popok <xalt7x.service@gmail.com>\n"
"Language-Team: \n"
@ -26,7 +26,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr "Гаразд"
@ -34,7 +34,7 @@ msgstr "Гаразд"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "Скасувати"
@ -216,7 +216,7 @@ msgid "Download failed"
msgstr "Невдале завантаження"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "Помилка"
@ -230,7 +230,7 @@ msgid "Stop"
msgstr "Зупинити"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "Визначити мову"
@ -302,11 +302,15 @@ msgstr "Введіть інструкції для перекладу ШІ..."
msgid "Instructions for AI:"
msgstr "Інструкції для ШІ:"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "Хронометраж на рівні слів"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "Експорт:"
@ -336,7 +340,7 @@ msgstr "Відкрити транскрипцію"
msgid "Cancel Transcription"
msgstr "Скасувати транскрипцію"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "Очистити історію"
@ -450,53 +454,53 @@ msgstr "Вигляд"
msgid "Timestamps"
msgstr "Позначки часу"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr "Експорт"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Перекласти"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr "Потрібен API-ключ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr "Будь ласка, введіть API-ключ OpenAI в налаштуваннях"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -562,18 +566,18 @@ msgstr "Допомога"
msgid "File"
msgstr "Файл"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr ""
"Ви впевнені, що хочете видалити вибрані транскрипції? Це незворотна дія."
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "Вибрати аудіофайл"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr "Не вдається додати до звʼязки ключів API-ключ OpenAI"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: lamb \n"
@ -29,7 +29,7 @@ msgstr "https://example.com/audio.mp3"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr "Ok"
@ -37,7 +37,7 @@ msgstr "Ok"
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "取消"
@ -223,7 +223,7 @@ msgid "Download failed"
msgstr "下载模型失败"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr "错误"
@ -237,7 +237,7 @@ msgid "Stop"
msgstr "停止"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "检测语言"
@ -310,11 +310,15 @@ msgstr "输入AI如何翻译的说明..."
msgid "Instructions for AI:"
msgstr "AI说明:"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "逐词识别"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr "导出:"
@ -344,7 +348,7 @@ msgstr "打开识别结果"
msgid "Cancel Transcription"
msgstr "取消识别"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "清除历史纪录"
@ -461,54 +465,54 @@ msgstr "查看"
msgid "Timestamps"
msgstr "时间戳"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr "导出"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "翻译"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr "调整大小"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr "需要API Key"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr "请在偏好设置中输入OpenAI API Key"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#, fuzzy
msgid "Resize Options"
msgstr "调整大小"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr "所需字幕长度"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -575,17 +579,17 @@ msgstr "帮助"
msgid "File"
msgstr "文件"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "您确定要删除所选录制吗?此操作无法撤消。"
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "选择音频文件"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr "无法将OpenAI API密钥保存到密钥串"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-28 22:29+0200\n"
"POT-Creation-Date: 2025-01-02 11:39+0200\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: Lamb\n"
@ -29,7 +29,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:69
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:245
#: buzz/widgets/transcriber/advanced_settings_dialog.py:97
#: buzz/widgets/main_window.py:244
#: buzz/widgets/main_window.py:246
msgid "Ok"
msgstr ""
@ -37,7 +37,7 @@ msgstr ""
#: buzz/widgets/preferences_dialog/preferences_dialog.py:70
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:246
#: buzz/widgets/model_download_progress_dialog.py:29
#: buzz/widgets/main_window.py:245
#: buzz/widgets/main_window.py:247
msgid "Cancel"
msgstr "取消"
@ -220,7 +220,7 @@ msgid "Download failed"
msgstr "下載模型"
#: buzz/widgets/preferences_dialog/models_preferences_widget.py:269
#: buzz/widgets/main_window.py:301 buzz/model_loader.py:503
#: buzz/widgets/main_window.py:303 buzz/model_loader.py:503
msgid "Error"
msgstr ""
@ -234,7 +234,7 @@ msgid "Stop"
msgstr "停止"
#: buzz/widgets/transcriber/languages_combo_box.py:35
#: buzz/transcriber/transcriber.py:159
#: buzz/transcriber/transcriber.py:160
msgid "Detect Language"
msgstr "檢測語言"
@ -307,11 +307,15 @@ msgstr ""
msgid "Instructions for AI:"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:42
#: buzz/widgets/transcriber/file_transcription_form_widget.py:43
msgid "Word-level timings"
msgstr "單字級別的時間表達"
#: buzz/widgets/transcriber/file_transcription_form_widget.py:66
#: buzz/widgets/transcriber/file_transcription_form_widget.py:54
msgid "Extract speech"
msgstr ""
#: buzz/widgets/transcriber/file_transcription_form_widget.py:77
msgid "Export:"
msgstr ""
@ -341,7 +345,7 @@ msgstr "打開轉換結果"
msgid "Cancel Transcription"
msgstr "取消錄製"
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:233
#: buzz/widgets/main_window_toolbar.py:71 buzz/widgets/main_window.py:235
#: buzz/settings/shortcut.py:26
msgid "Clear History"
msgstr "清除歷史紀錄"
@ -458,53 +462,53 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:158
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:172
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:182
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:90
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:281
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:282
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:72
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:83
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:108
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:119
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:127
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:135
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:147
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
msgid "Merge"
msgstr ""
@ -571,17 +575,17 @@ msgstr "幫助"
msgid "File"
msgstr "檔案"
#: buzz/widgets/main_window.py:237
#: buzz/widgets/main_window.py:239
msgid ""
"Are you sure you want to delete the selected transcription(s)? This action "
"cannot be undone."
msgstr "您確定要刪除所選錄製嗎?此操作無法撤消。"
#: buzz/widgets/main_window.py:265
#: buzz/widgets/main_window.py:267
msgid "Select audio file"
msgstr "選擇聲音檔案"
#: buzz/widgets/main_window.py:301
#: buzz/widgets/main_window.py:303
msgid "Unable to save OpenAI API key to keyring"
msgstr ""

View file

@ -16,7 +16,8 @@ CREATE TABLE transcription (
url TEXT,
whisper_model_size TEXT,
hugging_face_model_id TEXT,
word_level_timings BOOLEAN DEFAULT FALSE
word_level_timings BOOLEAN DEFAULT FALSE,
extract_speech BOOLEAN DEFAULT FALSE
);
CREATE TABLE transcription_segment (

View file

@ -144,6 +144,7 @@ class TranscriptionOptions:
task: Task = Task.TRANSCRIBE
model: TranscriptionModel = field(default_factory=TranscriptionModel)
word_level_timings: bool = False
extract_speech: bool = False
temperature: Tuple[float, ...] = DEFAULT_WHISPER_TEMPERATURE
initial_prompt: str = ""
openai_access_token: str = field(

View file

@ -19,6 +19,7 @@ class FileTranscriptionPreferences:
task: Task
model: TranscriptionModel
word_level_timings: bool
extract_speech: bool
temperature: Tuple[float, ...]
initial_prompt: str
enable_llm_translation: bool
@ -31,6 +32,7 @@ class FileTranscriptionPreferences:
settings.setValue("task", self.task)
settings.setValue("model", self.model)
settings.setValue("word_level_timings", self.word_level_timings)
settings.setValue("extract_speech", self.extract_speech)
settings.setValue("temperature", self.temperature)
settings.setValue("initial_prompt", self.initial_prompt)
settings.setValue("enable_llm_translation", self.enable_llm_translation)
@ -53,6 +55,10 @@ class FileTranscriptionPreferences:
word_level_timings = False if word_level_timings_value == "false" \
else bool(word_level_timings_value)
extract_speech_value = settings.value("extract_speech", False)
extract_speech = False if extract_speech_value == "false" \
else bool(extract_speech_value)
temperature = settings.value("temperature", DEFAULT_WHISPER_TEMPERATURE)
initial_prompt = settings.value("initial_prompt", "")
enable_llm_translation_value = settings.value("enable_llm_translation", False)
@ -68,6 +74,7 @@ class FileTranscriptionPreferences:
if model.model_type.is_available()
else TranscriptionModel.default(),
word_level_timings=word_level_timings,
extract_speech=extract_speech,
temperature=temperature,
initial_prompt=initial_prompt,
enable_llm_translation=enable_llm_translation,
@ -93,6 +100,7 @@ class FileTranscriptionPreferences:
llm_model=transcription_options.llm_model,
llm_prompt=transcription_options.llm_prompt,
word_level_timings=transcription_options.word_level_timings,
extract_speech=transcription_options.extract_speech,
model=transcription_options.model,
output_formats=file_transcription_options.output_formats,
)
@ -113,6 +121,7 @@ class FileTranscriptionPreferences:
llm_model=self.llm_model,
llm_prompt=self.llm_prompt,
word_level_timings=self.word_level_timings,
extract_speech=self.extract_speech,
model=self.model,
openai_access_token=openai_access_token,
),

View file

@ -1,3 +1,4 @@
import logging
from typing import Optional
from PyQt6.QtCore import pyqtSignal, Qt
@ -50,6 +51,16 @@ class FileTranscriptionFormWidget(QWidget):
file_transcription_layout = QFormLayout()
file_transcription_layout.addRow("", self.word_level_timings_checkbox)
self.extract_speech_checkbox = QCheckBox(_("Extract speech"))
self.extract_speech_checkbox.setChecked(
self.transcription_options.extract_speech
)
self.extract_speech_checkbox.stateChanged.connect(
self.on_extract_speech_changed
)
file_transcription_layout.addRow("", self.extract_speech_checkbox)
export_format_layout = QHBoxLayout()
for output_format in OutputFormat:
export_format_checkbox = QCheckBox(
@ -93,6 +104,15 @@ class FileTranscriptionFormWidget(QWidget):
(self.transcription_options, self.file_transcription_options)
)
def on_extract_speech_changed(self, value: int):
self.transcription_options.extract_speech = (
value == Qt.CheckState.Checked.value
)
self.transcription_options_changed.emit(
(self.transcription_options, self.file_transcription_options)
)
def get_on_checkbox_state_changed_callback(self, output_format: OutputFormat):
def on_checkbox_state_changed(state: int):
if state == Qt.CheckState.Checked.value:

View file

@ -2,8 +2,8 @@ import re
import os
import logging
import stable_whisper
import srt
from pathlib import Path
from srt_equalizer import srt_equalizer
from typing import Optional
from PyQt6.QtCore import Qt, QThread, QObject, pyqtSignal
@ -39,9 +39,10 @@ class TranscriptionWorker(QObject):
finished = pyqtSignal()
result_ready = pyqtSignal(list)
def __init__(self, transcription, transcription_service, regroup_string: str):
def __init__(self, transcription, transcription_options, transcription_service, regroup_string: str):
super().__init__()
self.transcription = transcription
self.transcription_options = transcription_options
self.transcription_service = transcription_service
self.regroup_string = regroup_string
@ -75,11 +76,20 @@ class TranscriptionWorker(QObject):
}
def run(self):
transcription_file = self.transcription.file
transcription_file_exists = os.path.exists(transcription_file)
transcription_file_path = Path(transcription_file)
speech_path = transcription_file_path.with_name(f"{transcription_file_path.stem}_speech.flac")
if self.transcription_options.extract_speech and os.path.exists(speech_path):
transcription_file = str(speech_path)
transcription_file_exists = True
result = stable_whisper.transcribe_any(
self.get_transcript,
self.transcription.file,
vad=os.path.exists(self.transcription.file),
suppress_silence=os.path.exists(self.transcription.file),
transcription_file,
vad=transcription_file_exists,
suppress_silence=transcription_file_exists,
regroup=self.regroup_string,
check_sorted=False,
)
@ -316,6 +326,7 @@ class TranscriptionResizerWidget(QWidget):
self.thread = QThread()
self.worker = TranscriptionWorker(
self.transcription,
self.transcription_options,
self.transcription_service,
regroup_string
)

View file

@ -15,6 +15,7 @@ To import a file:
|--------------------|---------------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| Export As | "TXT", "SRT", "VTT" | "TXT" | Export file format |
| Word-Level Timings | Off / On | Off | If checked, the transcription will generate a separate subtitle line for each word in the audio. Enabled only when "Export As" is set to "SRT" or "VTT". |
| Extract speech | Off / On | Off | If checked, speech will be extracted to a separate audio tack to improve accuracy. Available since 1.3.0. |
(See the [Live Recording section](#live-recording) for more information about the task, language, and quality settings.)

299
poetry.lock generated
View file

@ -53,6 +53,16 @@ files = [
{file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"},
]
[[package]]
name = "antlr4-python3-runtime"
version = "4.9.3"
description = "ANTLR 4.9.3 runtime for Python 3.7"
optional = false
python-versions = "*"
files = [
{file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"},
]
[[package]]
name = "anyio"
version = "4.3.0"
@ -180,6 +190,10 @@ files = [
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a37b8f0391212d29b3a91a799c8e4a2855e0576911cdfb2515487e30e322253d"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e84799f09591700a4154154cab9787452925578841a94321d5ee8fb9a9a328f0"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f66b5337fa213f1da0d9000bc8dc0cb5b896b726eefd9c6046f699b169c41b9e"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5dab0844f2cf82be357a0eb11a9087f70c5430b2c241493fc122bb6f2bb0917c"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e4fe605b917c70283db7dfe5ada75e04561479075761a0b3866c081d035b01c1"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1e9a65b5736232e7a7f91ff3d02277f11d339bf34099a56cdab6a8b3410a02b2"},
{file = "Brotli-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:58d4b711689366d4a03ac7957ab8c28890415e267f9b6589969e74b6e42225ec"},
{file = "Brotli-1.1.0-cp310-cp310-win32.whl", hash = "sha256:be36e3d172dc816333f33520154d708a2657ea63762ec16b62ece02ab5e4daf2"},
{file = "Brotli-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:0c6244521dda65ea562d5a69b9a26120769b7a9fb3db2fe9545935ed6735b128"},
{file = "Brotli-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a3daabb76a78f829cafc365531c972016e4aa8d5b4bf60660ad8ecee19df7ccc"},
@ -192,8 +206,14 @@ files = [
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:19c116e796420b0cee3da1ccec3b764ed2952ccfcc298b55a10e5610ad7885f9"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:510b5b1bfbe20e1a7b3baf5fed9e9451873559a976c1a78eebaa3b86c57b4265"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a1fd8a29719ccce974d523580987b7f8229aeace506952fa9ce1d53a033873c8"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c247dd99d39e0338a604f8c2b3bc7061d5c2e9e2ac7ba9cc1be5a69cb6cd832f"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1b2c248cd517c222d89e74669a4adfa5577e06ab68771a529060cf5a156e9757"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2a24c50840d89ded6c9a8fdc7b6ed3692ed4e86f1c4a4a938e1e92def92933e0"},
{file = "Brotli-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f31859074d57b4639318523d6ffdca586ace54271a73ad23ad021acd807eb14b"},
{file = "Brotli-1.1.0-cp311-cp311-win32.whl", hash = "sha256:39da8adedf6942d76dc3e46653e52df937a3c4d6d18fdc94a7c29d263b1f5b50"},
{file = "Brotli-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:aac0411d20e345dc0920bdec5548e438e999ff68d77564d5e9463a7ca9d3e7b1"},
{file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28"},
{file = "Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f"},
{file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409"},
{file = "Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2"},
{file = "Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451"},
@ -204,8 +224,24 @@ files = [
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111"},
{file = "Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839"},
{file = "Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0"},
{file = "Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951"},
{file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5"},
{file = "Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8"},
{file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f"},
{file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648"},
{file = "Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0"},
{file = "Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089"},
{file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368"},
{file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c"},
{file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284"},
{file = "Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7"},
{file = "Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0"},
{file = "Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b"},
{file = "Brotli-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a090ca607cbb6a34b0391776f0cb48062081f5f60ddcce5d11838e67a01928d1"},
{file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de9d02f5bda03d27ede52e8cfe7b865b066fa49258cbab568720aa5be80a47d"},
{file = "Brotli-1.1.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2333e30a5e00fe0fe55903c8832e08ee9c3b1382aacf4db26664a16528d51b4b"},
@ -215,6 +251,10 @@ files = [
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e93dfc1a1165e385cc8239fab7c036fb2cd8093728cbd85097b284d7b99249a2"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:aea440a510e14e818e67bfc4027880e2fb500c2ccb20ab21c7a7c8b5b4703d75"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:6974f52a02321b36847cd19d1b8e381bf39939c21efd6ee2fc13a28b0d99348c"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:a7e53012d2853a07a4a79c00643832161a910674a893d296c9f1259859a289d2"},
{file = "Brotli-1.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:d7702622a8b40c49bffb46e1e3ba2e81268d5c04a34f460978c6b5517a34dd52"},
{file = "Brotli-1.1.0-cp36-cp36m-win32.whl", hash = "sha256:a599669fd7c47233438a56936988a2478685e74854088ef5293802123b5b2460"},
{file = "Brotli-1.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d143fd47fad1db3d7c27a1b1d66162e855b5d50a89666af46e1679c496e8e579"},
{file = "Brotli-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:11d00ed0a83fa22d29bc6b64ef636c4552ebafcef57154b4ddd132f5638fbd1c"},
@ -226,6 +266,10 @@ files = [
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:919e32f147ae93a09fe064d77d5ebf4e35502a8df75c29fb05788528e330fe74"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:23032ae55523cc7bccb4f6a0bf368cd25ad9bcdcc1990b64a647e7bbcce9cb5b"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:224e57f6eac61cc449f498cc5f0e1725ba2071a3d4f48d5d9dffba42db196438"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:cb1dac1770878ade83f2ccdf7d25e494f05c9165f5246b46a621cc849341dc01"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:3ee8a80d67a4334482d9712b8e83ca6b1d9bc7e351931252ebef5d8f7335a547"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5e55da2c8724191e5b557f8e18943b1b4839b8efc3ef60d65985bcf6f587dd38"},
{file = "Brotli-1.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:d342778ef319e1026af243ed0a07c97acf3bad33b9f29e7ae6a1f68fd083e90c"},
{file = "Brotli-1.1.0-cp37-cp37m-win32.whl", hash = "sha256:587ca6d3cef6e4e868102672d3bd9dc9698c309ba56d41c2b9c85bbb903cdb95"},
{file = "Brotli-1.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2954c1c23f81c2eaf0b0717d9380bd348578a94161a65b3a2afc62c86467dd68"},
{file = "Brotli-1.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:efa8b278894b14d6da122a72fefcebc28445f2d3f880ac59d46c90f4c13be9a3"},
@ -238,6 +282,10 @@ files = [
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ab4fbee0b2d9098c74f3057b2bc055a8bd92ccf02f65944a241b4349229185a"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:141bd4d93984070e097521ed07e2575b46f817d08f9fa42b16b9b5f27b5ac088"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d2b35ca2c7f81d173d2fadc2f4f31e88cc5f7a39ae5b6db5513cf3383b0e0ec7"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:af6fa6817889314555aede9a919612b23739395ce767fe7fcbea9a80bf140fe5"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:2feb1d960f760a575dbc5ab3b1c00504b24caaf6986e2dc2b01c09c87866a943"},
{file = "Brotli-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:4410f84b33374409552ac9b6903507cdb31cd30d2501fc5ca13d18f73548444a"},
{file = "Brotli-1.1.0-cp38-cp38-win32.whl", hash = "sha256:db85ecf4e609a48f4b29055f1e144231b90edc90af7481aa731ba2d059226b1b"},
{file = "Brotli-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3d7954194c36e304e1523f55d7042c59dc53ec20dd4e9ea9d151f1b62b4415c0"},
{file = "Brotli-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb2ce4b8045c78ebbc7b8f3c15062e435d47e7393cc57c25115cfd49883747a"},
@ -250,6 +298,10 @@ files = [
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:949f3b7c29912693cee0afcf09acd6ebc04c57af949d9bf77d6101ebb61e388c"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:89f4988c7203739d48c6f806f1e87a1d96e0806d44f0fba61dba81392c9e474d"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:de6551e370ef19f8de1807d0a9aa2cdfdce2e85ce88b122fe9f6b2b076837e59"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0737ddb3068957cf1b054899b0883830bb1fec522ec76b1098f9b6e0f02d9419"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4f3607b129417e111e30637af1b56f24f7a49e64763253bbc275c75fa887d4b2"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:6c6e0c425f22c1c719c42670d561ad682f7bfeeef918edea971a79ac5252437f"},
{file = "Brotli-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:494994f807ba0b92092a163a0a283961369a65f6cbe01e8891132b7a320e61eb"},
{file = "Brotli-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f0d8a7a6b5983c2496e364b969f0e526647a06b075d034f3297dc66f3b360c64"},
{file = "Brotli-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cdad5b9014d83ca68c25d2e9444e28e967ef16e80f6b436918c700c117a85467"},
{file = "Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724"},
@ -479,6 +531,17 @@ files = [
{file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
]
[[package]]
name = "cloudpickle"
version = "3.1.0"
description = "Pickler class to extend the standard pickle.Pickler functionality"
optional = false
python-versions = ">=3.8"
files = [
{file = "cloudpickle-3.1.0-py3-none-any.whl", hash = "sha256:fe11acda67f61aaaec473e3afe030feb131d78a43461b718185363384f1ba12e"},
{file = "cloudpickle-3.1.0.tar.gz", hash = "sha256:81a929b6e3c7335c863c771d673d105f02efdb89dfaba0c90495d1c64796601b"},
]
[[package]]
name = "cmake"
version = "3.28.4"
@ -736,6 +799,35 @@ files = [
marshmallow = ">=3.18.0,<4.0.0"
typing-inspect = ">=0.4.0,<1"
[[package]]
name = "demucs"
version = "4.1.0a2"
description = "Music source separation in the waveform domain."
optional = false
python-versions = ">=3.8.0"
files = []
develop = false
[package.dependencies]
dora-search = "*"
einops = "*"
julius = ">=0.2.3"
lameenc = ">=1.2"
openunmix = "*"
pyyaml = "*"
torch = "2.2.1"
torchaudio = "2.2.1"
tqdm = "*"
[package.extras]
dev = ["diffq (>=0.2.1)", "dora-search (>=0.1.12)", "einops", "flake8", "hydra-colorlog (>=1.1)", "hydra-core (>=1.1)", "julius (>=0.2.3)", "lameenc (>=1.2)", "museval", "mypy", "openunmix", "pyyaml", "soundfile (>=0.10.3)", "submitit", "torch (==2.2.1)", "torchaudio (==2.2.1)", "tqdm", "treetable"]
[package.source]
type = "git"
url = "https://github.com/raivisdejus/demucs"
reference = "27c6425"
resolved_reference = "27c642565e02a0381780bf3583b937581817a74a"
[[package]]
name = "dill"
version = "0.3.8"
@ -773,6 +865,37 @@ files = [
{file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"},
]
[[package]]
name = "dora-search"
version = "0.1.12"
description = "Easy grid searches for ML."
optional = false
python-versions = ">=3.7.0"
files = [
{file = "dora_search-0.1.12.tar.gz", hash = "sha256:2956fd2c4c7e4b9a4830e83f0d4cf961be45cfba1a2f0570281e91d15ac516fb"},
]
[package.dependencies]
omegaconf = "*"
retrying = "*"
submitit = "*"
torch = "*"
treetable = "*"
[package.extras]
dev = ["coverage", "flake8", "hiplot", "hydra-core", "hydra_colorlog", "mypy", "pdoc3", "pytest", "pytorch_lightning"]
[[package]]
name = "einops"
version = "0.8.0"
description = "A new flavour of deep learning operations"
optional = false
python-versions = ">=3.8"
files = [
{file = "einops-0.8.0-py3-none-any.whl", hash = "sha256:9572fb63046264a862693b0a87088af3bdc8c068fde03de63453cbbde245465f"},
{file = "einops-0.8.0.tar.gz", hash = "sha256:63486517fed345712a8385c100cb279108d9d47e6ae59099b07657e983deae85"},
]
[[package]]
name = "exceptiongroup"
version = "1.2.0"
@ -1142,6 +1265,22 @@ MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
[[package]]
name = "julius"
version = "0.2.7"
description = "Nice DSP sweets: resampling, FFT Convolutions. All with PyTorch, differentiable and with CUDA support."
optional = false
python-versions = ">=3.6.0"
files = [
{file = "julius-0.2.7.tar.gz", hash = "sha256:3c0f5f5306d7d6016fcc95196b274cae6f07e2c9596eed314e4e7641554fbb08"},
]
[package.dependencies]
torch = ">=1.7.0"
[package.extras]
dev = ["coverage", "flake8", "mypy", "onnxruntime", "pdoc3", "resampy (==0.2.2)"]
[[package]]
name = "keyring"
version = "25.0.0"
@ -1167,6 +1306,84 @@ completion = ["shtab (>=1.1.0)"]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
[[package]]
name = "lameenc"
version = "1.7.0"
description = "LAME encoding bindings"
optional = false
python-versions = "*"
files = [
{file = "lameenc-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:666dae5544b82b7c7e2d45ee82b0b74a3b5d46c62f79df603a30f4b633c78556"},
{file = "lameenc-1.7.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:73ba7b02685d9c17a3b083622b85c859f9db35254d4ea9ee8305d4a8d321876b"},
{file = "lameenc-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:367c152dd1dc54c2d6c42837c1c149b0173eb4225e4782f88b1a391c95ff97af"},
{file = "lameenc-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b34c529d719bf303ace7ec169965c516b0b94922837cf67f60a73931f1f4580"},
{file = "lameenc-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ed1f49416e9531a49f462923ca0d2ae14baf9ceea0384cba2c5f9f1090f0df31"},
{file = "lameenc-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3274cade2d3f00cc49748b968660e1297eaca2d15911deb566cc378ffa4e7d8b"},
{file = "lameenc-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:790c250086dd38b26860ccb5574ad0f2c625b52bb9f2a367e07e50ffbf3de832"},
{file = "lameenc-1.7.0-cp310-cp310-win32.whl", hash = "sha256:8b712902e02ea03e9a5272ee008062b08d99129e7a00a369b90848a9bfab050f"},
{file = "lameenc-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:c8fd147d1faa904cb0b8ba3b038ab795daebec46147b2b9e3891dbb427084f5c"},
{file = "lameenc-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5a5b322d82dfdf6132c563e1fa352487c82a0bb1e93dff8ef634c867c94d82ad"},
{file = "lameenc-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a582a1f356c83be526ba97ce8465553cc55524992325ab1641b3ee0428e6453"},
{file = "lameenc-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e3399b72c8adb965405aeb8ccc614db9b94e5842426289166c4fbf2588cf1e74"},
{file = "lameenc-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:93eedf217db3832ead5ea28ad89b2f4dd3d79e3a7d5641d09dbeeeffe6283768"},
{file = "lameenc-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:63a2ce2d63706d766ad1686fbc5e12c807c027b7ccfc97de9b9a81f58216e770"},
{file = "lameenc-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2cb91af4b25b3d650781e681032c469fd38979b180eddfbf5a55322372d71b9"},
{file = "lameenc-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:e67f5e985d940f9f8037823e6a629a18acbfe02d0fcd68a8fc113ed46a555aa5"},
{file = "lameenc-1.7.0-cp311-cp311-win32.whl", hash = "sha256:c835438c0e8b8d680e871095cec143abf655d071b1bb60ccf7a8e08245acd877"},
{file = "lameenc-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:93f426a565e666227303257db67287f33836872dee62d982d521d8972467df46"},
{file = "lameenc-1.7.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ff9b6e1fed60a1e1f54861b51628a5c99a4ebc8be76462b8995c7cae99722ec5"},
{file = "lameenc-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a14a5f449cc32158ac2fd557a21b6a35dd1cb077e0372ede69572740f9b67905"},
{file = "lameenc-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b425fec9430a0aa55877d8787f82b47ff2c5d2a36663a4ca562103d7bbaeb23a"},
{file = "lameenc-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:002742147c99e819be4feb8ab05da08ff57f0f76480746ddc83f6a2c09d2639d"},
{file = "lameenc-1.7.0-cp312-cp312-win32.whl", hash = "sha256:bbabad75799e62638c0e55537e50ceba81456600ce04fb604c006c1b7399e8c1"},
{file = "lameenc-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0faf238be8044ee706d5f410e19ca1ae38fafa75dedcdc69ed764964d01c8d8b"},
{file = "lameenc-1.7.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c194dd436ed1894e325f3cb8baebf76cfa5ee867810c3fb8af2a76a62e219ac1"},
{file = "lameenc-1.7.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eec093a6673c7eebeebc269d7735ea09ec9cfda696ff92959b33bc1117b26954"},
{file = "lameenc-1.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:2bed2133410206f61780c412e49c218bf40179016de0284f61ed5bead3cce95a"},
{file = "lameenc-1.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:96e54919790e2b4e3519f1696ac19a5efb864c0621e7a2baf89ecfa95908e044"},
{file = "lameenc-1.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:26799cc2dac7d972f354489f33a5ab99d5ca4791edd1b0b3bd87e89bfa22f34f"},
{file = "lameenc-1.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:62ec507686326a6baec8b997070e96328ba8ff03abdc688e36ab47114883a223"},
{file = "lameenc-1.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e00c8771be3e002a539fd534f8df063a2dafc2d679803a7a4dfd7886ffa4304"},
{file = "lameenc-1.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:be3cf0820f278996680a48d163f781e85431704c0551d90780b165798f2ea1c5"},
{file = "lameenc-1.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bc05b160603665e570f2d8dd6a70dc6e337cb59dbd5e9a72044afb92c629096"},
{file = "lameenc-1.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:0d6c195df3f22e39dd2e2963858b0f6a73db8b993ca4f1996c5c147d386c6151"},
{file = "lameenc-1.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b18015e33d9530f47bdefc1a0dc91e4a8b94a3b0ff5fbdcac82b64b170388e8"},
{file = "lameenc-1.7.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:d63cd0f1b52b7719b212d9fe8c1fdeb8aa8618b9f943e628001981c235ae8722"},
{file = "lameenc-1.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1ecd67a8270075885b5b6f3cdf0c4bb3fb0a4589a679e55298f2606ee2fcb5ce"},
{file = "lameenc-1.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbbe822069bfadb4608c11a578f027f9c8ba01182332cd538a8ee55cf5d3bf23"},
{file = "lameenc-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:110b781e7916849eb430411180ac8c3821ffc7e0d15a18b3f26129e1aff2ce8f"},
{file = "lameenc-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f84bdcc3daa0b7635ba2a41d995b321b5d00b6637c89886f88e1d88e356c9baa"},
{file = "lameenc-1.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:e6c6a934754ed32a7680aaaf15f7fd20e29575239b93a23ee86dafa9b0143608"},
{file = "lameenc-1.7.0-cp38-cp38-win32.whl", hash = "sha256:4193472c4ec50397b234284551b52af23dd6f998634e0bd75e2caad5bb85ace7"},
{file = "lameenc-1.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:ff836d4964cc2f7197a14dfc8e2d3787f5e37f1d809ed914995a95ea24abce8f"},
{file = "lameenc-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c4dc7b13e871f9d4667be161823082f87c05252b36c1f1e3e0088765f0e81b5b"},
{file = "lameenc-1.7.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:6667cfe1ab6c15960cfe5fdc6ffdc6c1818d1385da143fcb0692218500b60b1e"},
{file = "lameenc-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d46fea0110812e89a4add722bc18e20e8146843395f9b4b9fad9f98a6ccf327e"},
{file = "lameenc-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f8e056d48f07bd17eecca11643c59aaf2804f6c1f822e4ab5b2bf5a313ef1a4"},
{file = "lameenc-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:4926c2b50b384c7640c78757b89a7faaccc6a6fcde5fd9016b554f946522e157"},
{file = "lameenc-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2d89e63c88e5a224299b310ac9430c2c2e16ca4f2b479e65baf4f17c92928e2a"},
{file = "lameenc-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:6cec7e369067d54528b98023fb75c26cd539bbc9292e73fe58516b6964b35db5"},
{file = "lameenc-1.7.0-cp39-cp39-win32.whl", hash = "sha256:53f1dc2574052354baecf07ba8d2da71dd9aab310c3efc8e029dae13be22a29f"},
{file = "lameenc-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:c3589924788e26afd55a1faa3947ba70167d9ba9901d42ba2b372922999e0ea6"},
{file = "lameenc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f51808bd3f2da74ce586ef3e3bcae8b77a4a59e9c476a46681d7c052c1c2211"},
{file = "lameenc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c74611af25522db4bcca9221254151ed6133847aa355595152d343d430dd888b"},
{file = "lameenc-1.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5bf4632fed752eca67c93d8ce89098cec8a58706d995151f27eec493771c4856"},
{file = "lameenc-1.7.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:29c9cc3c9012cf52640c071fc519f4b55c40e87b4e07f43ff80e939e6f6baae4"},
{file = "lameenc-1.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a2d88a1e32246f6071ad18dc42c6a9a2af2d8a600de561a887d4dc3d335b2f3d"},
{file = "lameenc-1.7.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9edec7fef66d0e1bd25690780ef697c3bea15f4f614e04de3fd930d558c43833"},
{file = "lameenc-1.7.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:6b7e0d28c3982eabf9fd8c51f19593c4c1684bb0e261482284a3fd56134bc302"},
{file = "lameenc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:a84335effaa1f56202a359b9fb2524e4e486e3c37c72a66647626220b22e34bb"},
{file = "lameenc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d089d5c2ae6430531e2dad49d9d4bfa06ff5e6ee9a2b24f1e1ccb5c942be200b"},
{file = "lameenc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:02b7ab137f1fb624020210ae3c2f671a9006ec30d2bec704a55aaebb3850ab3d"},
{file = "lameenc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c76a21488ba35b1dd1d37d8b0671646cb52ca92f7d9b2bb8234bf106ba57db08"},
{file = "lameenc-1.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:a46642b88d9461fd1377f2fcae387503d80753b954b2547ace91e5ba5fff11af"},
{file = "lameenc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0d0aa76ab3642c1025d8a47f0df4986147ae03f10d83c4b5ff34e8ddd1b62c45"},
{file = "lameenc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c103b3a021a000de7822249d91008e1adfcb70e7bdffa3483c5794045dc051dc"},
{file = "lameenc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:74fafaa009697a39b4dfae0d6763ad666ccda75386d68befd943decf46610722"},
{file = "lameenc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d3fe077c20dd521fd261ae5dfccab80d94eace7b7474035f1584a08eca1baa7f"},
{file = "lameenc-1.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:0bbd88b127bafce6da8ac8b03d5a87791d32b928dc61533e4752a935808fc851"},
]
[[package]]
name = "lazy-object-proxy"
version = "1.10.0"
@ -1659,6 +1876,21 @@ files = [
{file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"},
]
[[package]]
name = "omegaconf"
version = "2.3.0"
description = "A flexible configuration library"
optional = false
python-versions = ">=3.6"
files = [
{file = "omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b"},
{file = "omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7"},
]
[package.dependencies]
antlr4-python3-runtime = "==4.9.*"
PyYAML = ">=5.1.0"
[[package]]
name = "onnxruntime"
version = "1.17.1"
@ -1746,6 +1978,29 @@ triton = {version = ">=2.0.0", markers = "platform_machine == \"x86_64\" and sys
[package.extras]
dev = ["black", "flake8", "isort", "pytest", "scipy"]
[[package]]
name = "openunmix"
version = "1.3.0"
description = "PyTorch-based music source separation toolkit"
optional = false
python-versions = ">=3.9"
files = [
{file = "openunmix-1.3.0-py3-none-any.whl", hash = "sha256:e893ae22c5b8001a6107022499c2587b70d5c2e4777cc7c9ed6272b68a69534e"},
{file = "openunmix-1.3.0.tar.gz", hash = "sha256:cc9245ce728700f5d0b72c67f01be4162777e617cdc47f9b035963afac180fc8"},
]
[package.dependencies]
numpy = "*"
torch = ">=1.9.0"
torchaudio = ">=0.9.0"
tqdm = "*"
[package.extras]
asteroid = ["asteroid-filterbanks (>=0.3.2)"]
evaluation = ["musdb (>=0.4.0)", "museval (>=0.4.0)"]
stempeg = ["stempeg"]
tests = ["asteroid-filterbanks (>=0.3.2)", "musdb (>=0.4.0)", "museval (>=0.4.0)", "onnx", "pytest", "stempeg", "tqdm"]
[[package]]
name = "packaging"
version = "24.0"
@ -2528,6 +2783,20 @@ urllib3 = ">=1.21.1,<3"
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "retrying"
version = "1.3.4"
description = "Retrying"
optional = false
python-versions = "*"
files = [
{file = "retrying-1.3.4-py3-none-any.whl", hash = "sha256:8cc4d43cb8e1125e0ff3344e9de678fefd85db3b750b81b2240dc0183af37b35"},
{file = "retrying-1.3.4.tar.gz", hash = "sha256:345da8c5765bd982b1d1915deb9102fd3d1f7ad16bd84a9700b85f64d24e8f3e"},
]
[package.dependencies]
six = ">=1.7.0"
[[package]]
name = "ruff"
version = "0.1.15"
@ -2804,6 +3073,24 @@ tqdm = "*"
fw = ["faster-whisper"]
hf = ["accelerate", "optimum", "transformers (>=4.23.0)"]
[[package]]
name = "submitit"
version = "1.5.2"
description = "\"Python 3.8+ toolbox for submitting jobs to Slurm"
optional = false
python-versions = ">=3.8"
files = [
{file = "submitit-1.5.2-py3-none-any.whl", hash = "sha256:c6d5867fbcc78588d0ded3338436903f8db9fdb759f80e9639e6025a9ea32ade"},
{file = "submitit-1.5.2.tar.gz", hash = "sha256:36a8a54ad4e10171111e7618eefe28fe819f931a89c9cd1f6d2770900c013f12"},
]
[package.dependencies]
cloudpickle = ">=1.2.1"
typing_extensions = ">=3.7.4.2"
[package.extras]
dev = ["black (==23.3.0)", "coverage[toml] (>=5.1)", "flit (>=3.5.1)", "isort (==5.11.5)", "mypy (>=1.4.1)", "pre-commit (>=1.15.2)", "pylint (>=3.0.0)", "pytest (>=7.4.2)", "pytest-asyncio (>=0.15.0)", "pytest-cov (>=4.1.0)"]
[[package]]
name = "sympy"
version = "1.12"
@ -3279,6 +3566,16 @@ torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata",
video = ["av (==9.2.0)"]
vision = ["Pillow (>=10.0.1,<=15.0)"]
[[package]]
name = "treetable"
version = "0.2.5"
description = "Helper to pretty print an ascii table with atree-like structure"
optional = false
python-versions = ">=3.6.0"
files = [
{file = "treetable-0.2.5.tar.gz", hash = "sha256:29c95b797a8ecff4bb894cb7b103e39a78c905ab78a88a9a247de30c87743a2f"},
]
[[package]]
name = "triton"
version = "2.2.0"
@ -3588,4 +3885,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = ">=3.9,<3.13"
content-hash = "632021f1e3667151c633d4561d1f598531fe02999963cca797f500cbff9ced66"
content-hash = "7ade5c4344ca4919e943f75a668577a02358d57e0a19fbe50b94e0a938626e16"

View file

@ -52,6 +52,7 @@ torchaudio = [
{version = "2.2.1+cu121", source = "torch", markers = "sys_platform == 'win32' or sys_platform == 'msys'"},
]
darkdetect = "^0.8.0"
demucs = {git = "https://github.com/raivisdejus/demucs", rev = "27c6425"}
[tool.poetry.group.dev.dependencies]
autopep8 = "^1.7.0"

View file

@ -118,9 +118,10 @@ class TestWhisperFileTranscriber:
assert srt.endswith(".srt")
@pytest.mark.parametrize(
"word_level_timings,expected_segments,model",
"word_level_timings,extract_speech,expected_segments,model",
[
(
False,
False,
[
Segment(
@ -135,6 +136,7 @@ class TestWhisperFileTranscriber:
),
),
(
True,
True,
[Segment(40, 299, " Bien"), Segment(299, 329, "venue dans")],
TranscriptionModel(
@ -143,6 +145,7 @@ class TestWhisperFileTranscriber:
),
),
(
False,
False,
[
Segment(
@ -158,6 +161,7 @@ class TestWhisperFileTranscriber:
),
),
pytest.param(
False,
False,
[
Segment(
@ -181,6 +185,7 @@ class TestWhisperFileTranscriber:
self,
qtbot: QtBot,
word_level_timings: bool,
extract_speech: bool,
expected_segments: List[Segment],
model: TranscriptionModel,
):
@ -190,6 +195,7 @@ class TestWhisperFileTranscriber:
language="fr",
task=Task.TRANSCRIBE,
word_level_timings=word_level_timings,
extract_speech=extract_speech,
model=model,
)
model_path = get_model_path(transcription_options.model)

View file

@ -27,6 +27,7 @@ class TestFolderWatchPreferencesWidget:
task=Task.TRANSCRIBE,
model=TranscriptionModel.default(),
word_level_timings=False,
extract_speech=False,
temperature=DEFAULT_WHISPER_TEMPERATURE,
initial_prompt="",
enable_llm_translation=False,

View file

@ -44,6 +44,7 @@ class TestTranscriptionTaskFolderWatcher:
task=Task.TRANSCRIBE,
model=self.default_model(),
word_level_timings=False,
extract_speech=False,
temperature=DEFAULT_WHISPER_TEMPERATURE,
initial_prompt="",
enable_llm_translation=False,
@ -87,6 +88,7 @@ class TestTranscriptionTaskFolderWatcher:
task=Task.TRANSCRIBE,
model=self.default_model(),
word_level_timings=False,
extract_speech=False,
temperature=DEFAULT_WHISPER_TEMPERATURE,
initial_prompt="",
enable_llm_translation=False,