Adding speaker identification

This commit is contained in:
Raivis Dejus 2025-04-06 21:14:13 +03:00
commit 4e63fbaa3e
22 changed files with 2744 additions and 1554 deletions

3
.gitmodules vendored
View file

@ -1,3 +1,6 @@
[submodule "whisper.cpp"]
path = whisper.cpp
url = https://github.com/ggerganov/whisper.cpp
[submodule "whisper_diarization"]
path = whisper_diarization
url = https://github.com/MahmoudAshraf97/whisper-diarization

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\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"
@ -73,122 +73,127 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Idioma:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "Enregistrament en viu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -527,56 +532,131 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Obre una transcripció"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Desa el fitxer"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Desa el fitxer"
@ -684,10 +764,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Ole Guldberg2 <xalt7x.service@gmail.com>\n"
"Language-Team: \n"
@ -70,103 +70,108 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
#, fuzzy
msgid "Ukrainian"
msgstr "tilbageværende"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Sprog:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "Skriftypestørrelse"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "Test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "OpenAI API-nøgle"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "OpenAI base-URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "Standard eksport filnavn"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "Slå transkription af live optagelse eksport til"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Gennemse"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "Eksportmappe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "Live optagelsesmode"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "OpenAI API Nøgle test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -174,12 +179,12 @@ msgstr ""
"Din API nøgle er gyldig. Buzz vil benytte nøglen til at anvende Whisper API "
"transkription og AI oversættelser."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#, fuzzy
msgid "Invalid API key"
msgstr "Ugyldig API-nøgle"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -187,11 +192,11 @@ msgstr ""
"API supporterer kun base64 tegn (A-Za-z0-9+/=_-). Andre tegn i API-nøglen "
"kan guve fejl. "
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "Vælg eksport-mappe"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -524,56 +529,131 @@ msgstr "Vis"
msgid "Timestamps"
msgstr "Tidsstempler"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "Eksporter"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Oversæt"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "Behandel størrelse"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "API-nøgle påkrævet"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "Indtast venligst OpenAI API-nøgle i indstillinger"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr "Størrelsesindstillinger"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "Ønskede undertekst længde"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr "Sammenfletningsindstillinger"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr "Sammenflet ved hul"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr "Split ved punktum"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr "Split ved max længde"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr "Sammenflet"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Åben transkription"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Gem fil"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Gem fil"
@ -681,10 +761,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:13+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2025-03-05 14:41+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -72,100 +72,105 @@ msgid "Danish"
msgstr "Dänisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Niederländisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Deutsch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spanisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Italienisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japanisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Lettisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Polnisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ukrainisch"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr "Chinesisch (vereinfacht)"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr "Chinesisch (traditionell)"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr "Neustart erforderlich!"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
msgid "Ui Language"
msgstr "Sprache der Benutzeroberfläche"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "Schriftgröße"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "Test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "OpenAI-API-Schlüssel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "OpenAI-Basis-URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "Standardname der Exportdatei"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "Export von Live-Aufnahmetranskriptionen aktivieren"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Durchsuchen"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "Exportordner"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
msgid "Live recording mode"
msgstr "Live-Aufnahmemodus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "OpenAI-API-Schlüssel Test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -173,11 +178,11 @@ msgstr ""
"Ihr API-Schlüssel ist gültig. Buzz verwendet diesen Schlüssel, um Whisper-"
"API-Transkriptionen und KI-Übersetzungen durchzuführen."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr "Ungültiger API-Schlüssel"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -185,11 +190,11 @@ msgstr ""
"Die API unterstützt nur Base64-Zeichen (A-Za-z0-9+/=_-). Andere Zeichen im "
"API-Schlüssel können Fehler verursachen."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "Exportordner auswählen"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -523,56 +528,131 @@ msgstr "Anzeigen"
msgid "Timestamps"
msgstr "Zeitstempel"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "Export"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Übersetzen"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "Größe ändern"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "API-Schlüssel erforderlich"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "Bitte geben Sie den OpenAI-API-Schlüssel in den Einstellungen ein"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr "Größenänderungsoptionen"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "Gewünschte Untertitellänge"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr "Zusammenführungsoptionen"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr "Nach Abstand zusammenführen"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr "Durch Satzzeichen getrennt"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr "Aufgeteilt nach maximaler Länge"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr "Vereinigen"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Transkript öffnen"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Datei speichern"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Datei speichern"
@ -681,10 +761,6 @@ msgstr "Portugiesisch"
msgid "Turkish"
msgstr "Türkisch"
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Niederländisch"
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arabisch"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -73,120 +73,125 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
msgid "Ui Language"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
msgid "Live recording mode"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -512,56 +517,129 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
msgid "5/9 Preparing transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
msgid "Save"
msgstr ""
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr ""
@ -663,10 +741,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2023-11-09 04:35-0600\n"
"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
"Language-Team: \n"
@ -74,124 +74,129 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
# automatic translation
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Idioma:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr ""
# automatic translation
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "Grabación en vivo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -563,56 +568,133 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
# automatic translation
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Abrir transcripción"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
# automatic translation
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Guardar archivo"
# automatic translation
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
@ -729,10 +811,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: buzz\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2024-11-24 13:22+0100\n"
"Language-Team: (Italiano) Albano Battistella <albanobattistella@gmail.com>\n"
"Language: it_IT\n"
@ -72,102 +72,107 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
#, fuzzy
msgid "Ukrainian"
msgstr "rimanente"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Lingua:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "Dimensione del carattere"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "Test"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "Chiave API OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "URL di base di OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "Nome file di esportazione predefinito"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "Abilita l'esportazione della trascrizione della registrazione live"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Sfoglia"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "Esporta cartella"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
msgid "Live recording mode"
msgstr "Modalità di registrazione in diretta"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "Test della chiave API OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -175,11 +180,11 @@ msgstr ""
"La tua chiave API è valida. Buzz utilizzerà questa chiave per eseguire le "
"trascrizioni API Whisper e le traduzioni AI."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr "Chiave API non valida"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#, fuzzy
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
@ -188,11 +193,11 @@ msgstr ""
"L'API supporta solo caratteri base64 (A-Za-z0-9+/=). Altri caratteri nella "
"chiave API potrebbero causare errori."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "Seleziona la cartella di esportazione"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -525,57 +530,132 @@ msgstr "Visualizza"
msgid "Timestamps"
msgstr "Timestamp"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "Esporta"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Tradurre"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "Ridimensionare"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "Chiave API richiesta"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "Inserisci la chiave API OpenAI nelle preferenze"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
#, fuzzy
msgid "Resize Options"
msgstr "Ridimensionare"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "Lunghezza desiderata dei sottotitoli"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Apri trascrizione"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Salva file"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Salva file"
@ -683,10 +763,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: nunawa <71294849+nunawa@users.noreply.github.com>\n"
"Language-Team: \n"
@ -68,103 +68,108 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
#, fuzzy
msgid "Ukrainian"
msgstr "残り"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "言語:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "フォントサイズ"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "テスト"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "OpenAI APIキー"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "OpenAI ベースURL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "デフォルトの出力ファイル名"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "ライブ録音書き起こしの出力を有効にする"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "参照"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "出力フォルダ"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "ライブ録音"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "OpenAI APIキー テスト"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -172,22 +177,22 @@ msgstr ""
"あなたのAPIキーは有効です。Buzzはこのキーを使ってWhisper APIの書き起こしとAI"
"翻訳を行います。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#, fuzzy
msgid "Invalid API key"
msgstr "OpenAI APIキー"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "出力フォルダを選択"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -520,57 +525,132 @@ msgstr "表示"
msgid "Timestamps"
msgstr "タイムスタンプ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "出力"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "翻訳"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "リサイズ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "APIキーが必要"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "設定画面でOpenAI APIキーを入力してください"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
#, fuzzy
msgid "Resize Options"
msgstr "リサイズ"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "希望する字幕の長さ"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "文字起こしを開く"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "ファイルを保存"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "ファイルを保存"
@ -676,10 +756,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"PO-Revision-Date: 2025-02-22 23:44+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2025-04-06 21:04+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@ -74,102 +74,107 @@ msgid "Danish"
msgstr "Dāņu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandiešu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr "Vācu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr "Spāņu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr "Itāļu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr "Japāņu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr "Latviešu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr "Poļu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr "Ukraiņu"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr "Ķīniešu (vienkāršotā)"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr "Ķīniešu (tradicionālā)"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr "Jāpārstartē!"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
msgid "Ui Language"
msgstr "Programmas valoda"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "Fonta izmērs"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "Pārbaudīt"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "OpenAI API atslēga"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "OpenAI adrese"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "Eksporta fails"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "Eksportēt dzīvā ieraksta transkriptus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Izvēlēties"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "Eksportēt mapē"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
msgid "Live recording mode"
msgstr ""
"Dzīvā ieraksta\n"
"režīms"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "OpenAI API atslēgas pārbaude"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -177,11 +182,11 @@ msgstr ""
"Jūsu API atslēga ir derīga. Buzz izmantos to runas atpazīšanai ar Whisper "
"API un tulkošanai."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr "Nederīga API atslēga"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
@ -189,11 +194,11 @@ msgstr ""
"API atbalsta tikai base64 simbolus (A-Za-z0-9+/=_-). Citi simboli API "
"atslēgā var radīt kļūdas."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "Izvēlieties mapi kurā eksportēt"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -526,56 +531,129 @@ msgstr "Skats"
msgid "Timestamps"
msgstr "Laiks"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "Eksportēt"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Tulkot"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "Mainīt garumu"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr "Noteikt runātājus"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "API atslēgas kļūda"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
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:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr "Garuma maiņas iestatījumi"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "Vēlamais teksta garums"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr "Apvienošanas iestatījumi"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr "Apvienot pēc attāluma"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr "Dalīt pie pieturzīmēm"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr "Dalīt pie maksimālā garuma"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr "Apvienot"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr "1/9 Apkopo transkripcijas"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr "2/9 Ielādē audio"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr "3/9 Ielādē identifikācijas modeli"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr "4/9 Sagatavo audio"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
msgid "5/9 Preparing transcripts"
msgstr "5/9 Sagatavo transkripcijas"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr "6/9 Apstrādā audio"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr "7/9 Nosaka runātājus"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr "8/9 Marķē runātāju teikumus"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr "9/9 Runātāju noteikšana pabeigta"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr "1. solis: Runātāju noteikšana"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr "Noteikt"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr "Gatavs noteikt runātājus"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr "Audio datne nav atrasta"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr "2. solis: Identificēt runātājus"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr "Atskaņot paraugu"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr "Apvienot runātāja teikumus"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
msgid "Save"
msgstr "Saglabāt"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Saglabāt failu"
@ -681,10 +759,6 @@ msgstr "Portugāļu"
msgid "Turkish"
msgstr "Turku"
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr "Holandiešu"
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr "Arābu"

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2024-03-17 20:50+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -73,123 +73,128 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Język:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "Nagrywanie na żywo"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#, fuzzy
msgid "Invalid API key"
msgstr "Nieprawidłowy URL"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -533,56 +538,131 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Otwórz transkrypt"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Zapisz plik"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
#, fuzzy
msgid "Save File"
@ -691,10 +771,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: \n"
"Last-Translator: Yevhen Popok <xalt7x.service@gmail.com>\n"
"Language-Team: \n"
@ -70,103 +70,108 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
#, fuzzy
msgid "Ukrainian"
msgstr "залишилось"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "Мова:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "Розмір шрифту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "Тест"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "API-ключ OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "Базова адреса OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "Типова назва файлу експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "Увімкнути експорт транскрипції з живого запису"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "Огляд"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "Тека для експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "Живий запис"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "Тест API-ключа OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
@ -174,22 +179,22 @@ msgstr ""
"Ваш API-ключ дійсний. Buzz використає цей ключ для транскрипції з Whisper "
"API та перекладу ШІ."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#, fuzzy
msgid "Invalid API key"
msgstr "API-ключ OpenAI"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "Виберіть теку для експорту"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -522,56 +527,131 @@ msgstr "Вигляд"
msgid "Timestamps"
msgstr "Позначки часу"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "Експорт"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "Перекласти"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "Потрібен API-ключ"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "Будь ласка, введіть API-ключ OpenAI в налаштуваннях"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "Відкрити транскрипцію"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "Зберегти файл"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
msgid "Save File"
msgstr "Зберегти файл"
@ -677,10 +757,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: lamb \n"
@ -73,113 +73,118 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
#, fuzzy
msgid "Ukrainian"
msgstr "剩余"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "语言:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr "字体大小"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr "测试"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr "OpenAI API key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr "OpenAI 基于 url"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr "默认输出文件名"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr "启用实时录制转录导出"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr "浏览"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr "导出文件夹"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "现场录制模式"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr "测试OpenAI API Key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr "您的API密钥有效。Buzz将使用此密钥执行 Whisper API 识别和 AI 翻译。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr "无效的API key"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
#, fuzzy
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
@ -187,11 +192,11 @@ msgid ""
msgstr ""
"API只支持 base64字符A-Za-z0-9+/=。其他字符在API密钥中可能导致错误。"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr "选择输出文件夹"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -534,57 +539,132 @@ msgstr "查看"
msgid "Timestamps"
msgstr "时间戳"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr "导出"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr "翻译"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr "调整大小"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr "需要API Key"
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr "请在偏好设置中输入OpenAI API Key"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
#, fuzzy
msgid "Resize Options"
msgstr "调整大小"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr "所需字幕长度"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr "合并选项"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr "按间隔合并"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr "按标点符号拆分"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr "按最大长度拆分"
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr "合并"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "打开识别结果"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "保存文件"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
#, fuzzy
msgid "Save File"
@ -691,10 +771,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-03-06 19:12+0200\n"
"POT-Creation-Date: 2025-04-06 20:58+0300\n"
"PO-Revision-Date: 2023-05-01 15:45+0800\n"
"Last-Translator: \n"
"Language-Team: Lamb\n"
@ -73,122 +73,127 @@ msgid "Danish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:38
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/transcriber/transcriber.py:40
msgid "German"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:39
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/transcriber/transcriber.py:41
msgid "Spanish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:40
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/transcriber/transcriber.py:53
msgid "Italian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:41
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/transcriber/transcriber.py:45
msgid "Japanese"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/transcriber/transcriber.py:80
msgid "Latvian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:43
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/transcriber/transcriber.py:48
msgid "Polish"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/transcriber/transcriber.py:59
msgid "Ukrainian"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:45
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
msgid "Chinese (Simplified)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:46
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:47
msgid "Chinese (Traditional)"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:85
msgid "Restart required!"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:88
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:89
#, fuzzy
msgid "Ui Language"
msgstr "語言:"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:96
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:97
msgid "Font Size"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:105
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:106
msgid "Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:111
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:112
msgid "OpenAI API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:124
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:125
msgid "OpenAI base url"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:133
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "Default export file name"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:139
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:140
msgid "Enable live recording transcription export"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:145
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:146
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
msgid "Browse"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:164
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:165
msgid "Export folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:175
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:176
#, fuzzy
msgid "Live recording mode"
msgstr "現場錄製"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:200
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:206
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:207
msgid "OpenAI API Key Test"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:201
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:202
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions and AI translations."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:217
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
msgid "Invalid API key"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:218
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:219
msgid ""
"API supports only base64 characters (A-Za-z0-9+/=_-). Other characters in "
"API key may cause errors."
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:236
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:237
msgid "Select Export Folder"
msgstr ""
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:296
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:297
msgid ""
"OpenAI API returned invalid response. Please check the API url or your key. "
"Transcription and translation may still work if the API does not support key "
@ -529,56 +534,131 @@ msgstr ""
msgid "Timestamps"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:146
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:150
msgid "Export"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:160
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:164
#: buzz/transcriber/transcriber.py:24
msgid "Translate"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:170
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:168
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:174
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:166
msgid "Resize"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:269
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:187
msgid "Identify Speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:286
msgid "API Key Required"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:270
#: buzz/widgets/transcription_viewer/transcription_viewer_widget.py:287
msgid "Please enter OpenAI API Key in preferences"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:150
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:148
msgid "Resize Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:161
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:159
msgid "Desired subtitle length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:186
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:184
msgid "Merge Options"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:197
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:195
msgid "Merge by gap"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:205
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:203
msgid "Split by punctuation"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:213
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:211
msgid "Split by max length"
msgstr ""
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:225
#: buzz/widgets/transcription_viewer/transcription_resizer_widget.py:223
msgid "Merge"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:101
msgid "1/9 Collecting transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:115
msgid "2/9 Loading audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:124
msgid "3/9 Loading alignment model"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:130
msgid "4/9 Preparing audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:142
#, fuzzy
msgid "5/9 Preparing transcripts"
msgstr "打開轉換結果"
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:160
msgid "6/9 Converting audio"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:174
msgid "7/9 Identifying speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:184
msgid "8/9 Mapping speakers to transcripts"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:233
msgid "9/9 Identification done"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:278
msgid "Step 1: Identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:290
msgid "Identify"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:300
msgid "Ready to identify speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:302
msgid "Audio file not found"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:318
msgid "Step 2: Name speakers"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:333
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:431
msgid "Play sample"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:348
msgid "Merge speaker sentences"
msgstr ""
#: buzz/widgets/transcription_viewer/speaker_identification_widget.py:353
#, fuzzy
msgid "Save"
msgstr "檔案"
#: buzz/widgets/transcription_viewer/export_transcription_menu.py:78
#, fuzzy
msgid "Save File"
@ -685,10 +765,6 @@ msgstr ""
msgid "Turkish"
msgstr ""
#: buzz/transcriber/transcriber.py:50
msgid "Dutch"
msgstr ""
#: buzz/transcriber/transcriber.py:51
msgid "Arabic"
msgstr ""

View file

@ -1,11 +1,14 @@
import re
import os
import logging
import stable_whisper
import srt
from pathlib import Path
import faster_whisper
import torch
import torchaudio
import random
from typing import Optional
from PyQt6.QtCore import Qt, QThread, QObject, pyqtSignal
from platformdirs import user_cache_dir
from PyQt6.QtMultimedia import QMediaPlayer, QAudioOutput
from PyQt6.QtCore import Qt, QThread, QObject, pyqtSignal, QUrl, QTimer
from PyQt6.QtGui import QFont
from PyQt6.QtWidgets import (
QWidget,
@ -13,14 +16,15 @@ from PyQt6.QtWidgets import (
QVBoxLayout,
QHBoxLayout,
QLabel,
QSpinBox,
QProgressBar,
QPushButton,
QCheckBox,
QGroupBox,
QSpacerItem,
QSizePolicy,
QLayout,
)
from buzz.locale import _, languages
from buzz.locale import _
from buzz.db.entity.transcription import Transcription
from buzz.db.service.transcription_service import TranscriptionService
from buzz.paths import file_path_as_title
@ -31,19 +35,38 @@ from buzz.widgets.preferences_dialog.models.file_transcription_preferences impor
FileTranscriptionPreferences,
)
from ctc_forced_aligner import (
generate_emissions,
get_alignments,
get_spans,
load_alignment_model,
postprocess_results,
preprocess_text,
)
from whisper_diarization.helpers import (
cleanup,
create_config,
get_realigned_ws_mapping_with_punctuation,
get_sentences_speaker_mapping,
get_words_speaker_mapping,
langs_to_iso,
punct_model_langs,
)
from deepmultilingualpunctuation import PunctuationModel
from nemo.collections.asr.models.msdd_models import NeuralDiarizer
SENTENCE_END = re.compile(r'.*[.!?。!?]')
class TranscriptionWorker(QObject):
finished = pyqtSignal()
result_ready = pyqtSignal(list)
class IdentificationWorker(QObject):
finished = pyqtSignal(list)
progress_update = pyqtSignal(str)
def __init__(self, transcription, transcription_options, transcription_service, regroup_string: str):
def __init__(self, transcription, transcription_options, transcription_service):
super().__init__()
self.transcription = transcription
self.transcription_options = transcription_options
self.transcription_service = transcription_service
self.regroup_string = regroup_string
def get_transcript(self, audio, **kwargs) -> dict:
buzz_segments = self.transcription_service.get_transcription_segments(
@ -75,36 +98,139 @@ class TranscriptionWorker(QObject):
}
def run(self):
transcription_file = self.transcription.file
transcription_file_exists = os.path.exists(transcription_file)
self.progress_update.emit(_("1/9 Collecting transcripts"))
transcription_file_path = Path(transcription_file)
speech_path = transcription_file_path.with_name(f"{transcription_file_path.stem}_speech.mp3")
if self.transcription_options.extract_speech and os.path.exists(speech_path):
transcription_file = str(speech_path)
transcription_file_exists = True
# Step 1 - Get transcript
# TODO - Add detected language to the transcript, detect and store separately in metadata
# Will also be relevant for template parsing of transcript file names
# - See diarize.py for example on how to get this info from whisper transcript, maybe other whisper models also have it
language = self.transcription.language if self.transcription.language else "en"
result = stable_whisper.transcribe_any(
self.get_transcript,
transcription_file,
vad=transcription_file_exists,
suppress_silence=transcription_file_exists,
regroup=self.regroup_string,
check_sorted=False,
segments = self.transcription_service.get_transcription_segments(
transcription_id=self.transcription.id_as_uuid
)
segments = []
for segment in result.segments:
segments.append(
Segment(
start=int(segment.start * 100),
end=int(segment.end * 100),
text=segment.text
)
full_transcript = "".join(segment.text for segment in segments)
self.progress_update.emit(_("2/9 Loading audio"))
audio_waveform = faster_whisper.decode_audio(self.transcription.file)
# Step 2 - Forced alignment
force_cpu = os.getenv("BUZZ_FORCE_CPU", "false")
use_cuda = torch.cuda.is_available() and force_cpu == "false"
device = "cuda" if use_cuda else "cpu"
torch_dtype = torch.float16 if use_cuda else torch.float32
self.progress_update.emit(_("3/9 Loading alignment model"))
alignment_model, alignment_tokenizer = load_alignment_model(
device,
dtype=torch_dtype,
)
self.progress_update.emit(_("4/9 Preparing audio"))
emissions, stride = generate_emissions(
alignment_model,
torch.from_numpy(audio_waveform)
.to(alignment_model.dtype)
.to(alignment_model.device),
batch_size=8,
)
del alignment_model
torch.cuda.empty_cache()
self.progress_update.emit(_("5/9 Preparing transcripts"))
tokens_starred, text_starred = preprocess_text(
full_transcript,
romanize=True,
language=langs_to_iso[language],
)
segments, scores, blank_token = get_alignments(
emissions,
tokens_starred,
alignment_tokenizer,
)
spans = get_spans(tokens_starred, segments, blank_token)
word_timestamps = postprocess_results(text_starred, spans, stride, scores)
# convert audio to mono for NeMo compatibility
self.progress_update.emit(_("6/9 Converting audio"))
model_root_dir = user_cache_dir("Buzz")
model_root_dir = os.getenv("BUZZ_MODEL_ROOT", model_root_dir)
temp_path = os.path.join(model_root_dir, "speaker_identification_temp")
os.makedirs(temp_path, exist_ok=True)
torchaudio.save(
os.path.join(temp_path, "mono_file.wav"),
torch.from_numpy(audio_waveform).unsqueeze(0).float(),
16000,
channels_first=True,
)
# Step 3 - Diarization
self.progress_update.emit(_("7/9 Identifying speakers"))
logging.basicConfig(level=logging.INFO)
logging.getLogger("nemo_logger").setLevel(logging.ERROR)
msdd_model = NeuralDiarizer(cfg=create_config(temp_path)).to(device)
msdd_model.diarize()
del msdd_model
torch.cuda.empty_cache()
# Step 4 - Reading timestamps <> Speaker Labels mapping
self.progress_update.emit(_("8/9 Mapping speakers to transcripts"))
speaker_ts = []
with open(os.path.join(temp_path, "pred_rttms", "mono_file.rttm"), "r") as f:
lines = f.readlines()
for line in lines:
line_list = line.split(" ")
s = int(float(line_list[5]) * 1000)
e = s + int(float(line_list[8]) * 1000)
speaker_ts.append([s, e, int(line_list[11].split("_")[-1])])
wsm = get_words_speaker_mapping(word_timestamps, speaker_ts, "start")
if language in punct_model_langs:
# restoring punctuation in the transcript to help realign the sentences
punct_model = PunctuationModel(model="kredor/punctuate-all")
words_list = list(map(lambda x: x["word"], wsm))
labled_words = punct_model.predict(words_list, chunk_size=230)
ending_puncts = ".?!。!?"
model_puncts = ".,;:!?。!?"
# We don't want to punctuate U.S.A. with a period. Right?
is_acronym = lambda x: re.fullmatch(r"\b(?:[a-zA-Z]\.){2,}", x)
for word_dict, labeled_tuple in zip(wsm, labled_words):
word = word_dict["word"]
if (
word
and labeled_tuple[1] in ending_puncts
and (word[-1] not in model_puncts or is_acronym(word))
):
word += labeled_tuple[1]
if word.endswith(".."):
word = word.rstrip(".")
word_dict["word"] = word
else:
logging.warning(
f"Punctuation restoration is not available for {language} language."
" Using the original punctuation."
)
self.result_ready.emit(segments)
self.finished.emit()
wsm = get_realigned_ws_mapping_with_punctuation(wsm)
ssm = get_sentences_speaker_mapping(wsm, speaker_ts)
cleanup(temp_path)
self.progress_update.emit(_("9/9 Identification done"))
self.finished.emit(ssm)
class SpeakerIdentificationWidget(QWidget):
@ -125,12 +251,13 @@ class SpeakerIdentificationWidget(QWidget):
self.transcription_service = transcription_service
self.transcriptions_updated_signal = transcriptions_updated_signal
self.new_transcript_id = None
self.identification_result = None
self.thread = None
self.worker = None
self.setMinimumWidth(600)
self.setMinimumHeight(300)
self.setMinimumWidth(650)
self.setMinimumHeight(400)
self.setWindowTitle(file_path_as_title(transcription.file))
@ -144,182 +271,262 @@ class SpeakerIdentificationWidget(QWidget):
)
layout = QFormLayout(self)
layout.setSizeConstraint(QLayout.SizeConstraint.SetMinAndMaxSize)
# Resize longer subtitles
resize_label = QLabel(_("Resize Options"), self)
font = resize_label.font()
# Step 1: Identify speakers
step_1_label = QLabel(_("Step 1: Identify speakers"), self)
font = step_1_label.font()
font.setWeight(QFont.Weight.Bold)
resize_label.setFont(font)
layout.addRow(resize_label)
step_1_label.setFont(font)
layout.addRow(step_1_label)
resize_group_box = QGroupBox(self)
resize_layout = QVBoxLayout(resize_group_box)
step_1_group_box = QGroupBox(self)
step_1_group_box.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
step_1_layout = QVBoxLayout(step_1_group_box)
self.resize_row = QHBoxLayout()
self.step_1_row = QHBoxLayout()
self.desired_subtitle_length_label = QLabel(_("Desired subtitle length"), self)
self.step_1_button = QPushButton(_("Identify"))
self.step_1_button.setMinimumWidth(200)
self.step_1_button.clicked.connect(self.on_identify_button_clicked)
self.target_chars_spin_box = QSpinBox(self)
self.target_chars_spin_box.setMinimum(1)
self.target_chars_spin_box.setMaximum(100)
self.target_chars_spin_box.setValue(42)
self.progress_bar = QProgressBar(self)
self.progress_bar.setMinimumWidth(400)
self.progress_bar.setRange(0, 9)
self.progress_bar.setValue(0)
self.resize_button = QPushButton(_("Resize"))
self.resize_button.clicked.connect(self.on_resize_button_clicked)
if os.path.isfile(self.transcription.file):
self.progress_bar.setFormat(_("Ready to identify speakers"))
else:
self.progress_bar.setFormat(_("Audio file not found"))
self.step_1_button.setEnabled(False)
self.resize_row.addWidget(self.desired_subtitle_length_label)
self.resize_row.addWidget(self.target_chars_spin_box)
self.resize_row.addWidget(self.resize_button)
self.step_1_row.addWidget(self.progress_bar)
resize_layout.addLayout(self.resize_row)
self.step_1_row.addWidget(self.step_1_button)
resize_group_box.setEnabled(self.transcription.word_level_timings != 1)
step_1_layout.addLayout(self.step_1_row)
layout.addRow(resize_group_box)
layout.addRow(step_1_group_box)
# Spacer
spacer = QSpacerItem(0, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)
layout.addItem(spacer)
# Merge words into subtitles
merge_options_label = QLabel(_("Merge Options"), self)
font = merge_options_label.font()
# Step 2: Name speakers
step_2_label = QLabel(_("Step 2: Name speakers"), self)
font = step_2_label.font()
font.setWeight(QFont.Weight.Bold)
merge_options_label.setFont(font)
layout.addRow(merge_options_label)
step_2_label.setFont(font)
layout.addRow(step_2_label)
merge_options_group_box = QGroupBox(self)
merge_options_layout = QVBoxLayout(merge_options_group_box)
self.step_2_group_box = QGroupBox(self)
self.step_2_group_box.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
self.step_2_group_box.setEnabled(False)
step_2_layout = QVBoxLayout(self.step_2_group_box)
self.merge_options_row = QVBoxLayout()
self.speaker_preview_row = QVBoxLayout()
self.merge_by_gap = QCheckBox(_("Merge by gap"))
self.merge_by_gap.setChecked(True)
self.merge_by_gap.setMinimumWidth(250)
self.merge_by_gap_input = LineEdit("0.2", self)
merge_by_gap_layout = QHBoxLayout()
merge_by_gap_layout.addWidget(self.merge_by_gap)
merge_by_gap_layout.addWidget(self.merge_by_gap_input)
self.speaker_0_input = LineEdit("Speaker 0", self)
self.split_by_punctuation = QCheckBox(_("Split by punctuation"))
self.split_by_punctuation.setChecked(True)
self.split_by_punctuation.setMinimumWidth(250)
self.split_by_punctuation_input = LineEdit(".* /./. /。/?/? //!/! //,/, ", self)
split_by_punctuation_layout = QHBoxLayout()
split_by_punctuation_layout.addWidget(self.split_by_punctuation)
split_by_punctuation_layout.addWidget(self.split_by_punctuation_input)
self.speaker_0_preview_button = QPushButton(_("Play sample"))
self.speaker_0_preview_button.setMinimumWidth(200)
self.speaker_0_preview_button.clicked.connect(lambda: self.on_speaker_preview("Speaker 0"))
self.split_by_max_length = QCheckBox(_("Split by max length"))
self.split_by_max_length.setChecked(True)
self.split_by_max_length.setMinimumWidth(250)
self.split_by_max_length_input = LineEdit("42", self)
split_by_max_length_layout = QHBoxLayout()
split_by_max_length_layout.addWidget(self.split_by_max_length)
split_by_max_length_layout.addWidget(self.split_by_max_length_input)
speaker_0_layout = QHBoxLayout()
speaker_0_layout.addWidget(self.speaker_0_input)
speaker_0_layout.addWidget(self.speaker_0_preview_button)
self.merge_options_row.addLayout(merge_by_gap_layout)
self.merge_options_row.addLayout(split_by_punctuation_layout)
self.merge_options_row.addLayout(split_by_max_length_layout)
self.speaker_preview_row.addLayout(speaker_0_layout)
self.merge_button = QPushButton(_("Merge"))
self.merge_button.clicked.connect(self.on_merge_button_clicked)
step_2_layout.addLayout(self.speaker_preview_row)
self.merge_options_row.addWidget(self.merge_button)
layout.addRow(self.step_2_group_box)
merge_options_layout.addLayout(self.merge_options_row)
# Save button
self.merge_speaker_sentences = QCheckBox(_("Merge speaker sentences"))
self.merge_speaker_sentences.setChecked(True)
self.merge_speaker_sentences.setEnabled(False)
self.merge_speaker_sentences.setMinimumWidth(250)
merge_options_group_box.setEnabled(self.transcription.word_level_timings == 1)
self.save_button = QPushButton(_("Save"))
self.save_button.setEnabled(False)
self.save_button.clicked.connect(self.on_save_button_clicked)
layout.addRow(merge_options_group_box)
layout.addRow(self.merge_speaker_sentences)
layout.addRow(self.save_button)
self.setLayout(layout)
# Invisible preview player
url = QUrl.fromLocalFile(self.transcription.file)
self.player = QMediaPlayer()
self.audio_output = QAudioOutput()
self.player.setAudioOutput(self.audio_output)
self.player.setSource(url)
self.player_timer = None
def load_preferences(self):
self.settings.settings.beginGroup("file_transcriber")
preferences = FileTranscriptionPreferences.load(settings=self.settings.settings)
self.settings.settings.endGroup()
return preferences
# TODO rename function
def on_resize_button_clicked(self):
# Step 1 - Get the segments
segments = self.transcription_service.get_transcription_segments(
transcription_id=self.transcription.id_as_uuid
)
subs = []
for segment in segments:
subtitle = srt.Subtitle(
index=segment.id,
start=segment.start_time,
end=segment.end_time,
content=segment.text
)
subs.append(subtitle)
# Step 2 - ...
logging.debug(f"=== Will identify speakers ===")
def on_merge_button_clicked(self):
self.new_transcript_id = self.transcription_service.copy_transcription(
self.transcription.id_as_uuid
)
self.transcription_service.update_transcription_progress(self.new_transcript_id, 0.0)
if self.transcriptions_updated_signal:
self.transcriptions_updated_signal.emit(self.new_transcript_id)
regroup_string = ''
if self.merge_by_gap.isChecked():
regroup_string += f'mg={self.merge_by_gap_input.text()}'
if self.split_by_max_length.isChecked():
regroup_string += f'++{self.split_by_max_length_input.text()}+1'
if self.split_by_punctuation.isChecked():
if regroup_string:
regroup_string += '_'
regroup_string += f'sp={self.split_by_punctuation_input.text()}'
if self.split_by_max_length.isChecked():
if regroup_string:
regroup_string += '_'
regroup_string += f'sl={self.split_by_max_length_input.text()}'
if self.merge_by_gap.isChecked():
if regroup_string:
regroup_string += '_'
regroup_string += f'mg={self.merge_by_gap_input.text()}'
if self.split_by_max_length.isChecked():
regroup_string += f'++{self.split_by_max_length_input.text()}+1'
regroup_string = os.getenv("BUZZ_MERGE_REGROUP_RULE", regroup_string)
self.hide()
def on_identify_button_clicked(self):
self.thread = QThread()
self.worker = TranscriptionWorker(
self.worker = IdentificationWorker(
self.transcription,
self.transcription_options,
self.transcription_service,
regroup_string
self.transcription_service
)
self.worker.moveToThread(self.thread)
self.thread.started.connect(self.worker.run)
self.worker.finished.connect(self.thread.quit)
self.worker.finished.connect(self.worker.deleteLater)
self.thread.finished.connect(self.thread.deleteLater)
self.worker.result_ready.connect(self.on_transcription_completed)
self.worker.finished.connect(self.on_identification_finished)
self.worker.progress_update.connect(self.on_progress_update)
self.thread.start()
def on_transcription_completed(self, segments):
if self.new_transcript_id is not None:
self.transcription_service.update_transcription_as_completed(self.new_transcript_id, segments)
def on_progress_update(self, progress):
self.progress_bar.setFormat(progress)
if self.transcriptions_updated_signal:
self.transcriptions_updated_signal.emit(self.new_transcript_id)
progress_value = 0
if progress and progress[0].isdigit():
progress_value = int(progress[0])
self.progress_bar.setValue(progress_value)
else:
logging.error(f"Invalid progress format: {progress}")
if progress_value == 9:
self.step_2_group_box.setEnabled(True)
self.merge_speaker_sentences.setEnabled(True)
self.save_button.setEnabled(True)
def on_identification_finished(self, result):
self.identification_result = result
unique_speakers = {entry['speaker'] for entry in result}
while self.speaker_preview_row.count():
item = self.speaker_preview_row.takeAt(0)
widget = item.widget()
if widget:
widget.deleteLater()
else:
layout = item.layout()
if layout:
while layout.count():
sub_item = layout.takeAt(0)
sub_widget = sub_item.widget()
if sub_widget:
sub_widget.deleteLater()
for speaker in sorted(unique_speakers):
speaker_input = LineEdit(speaker, self)
speaker_input.setMinimumWidth(200)
speaker_preview_button = QPushButton(_("Play sample"))
speaker_preview_button.setMinimumWidth(200)
speaker_preview_button.clicked.connect(lambda checked, s=speaker: self.on_speaker_preview(s))
speaker_layout = QHBoxLayout()
speaker_layout.addWidget(speaker_input)
speaker_layout.addWidget(speaker_preview_button)
self.speaker_preview_row.addLayout(speaker_layout)
def on_speaker_preview(self, speaker_id):
if self.player_timer:
self.player_timer.stop()
speaker_records = [record for record in self.identification_result if record['speaker'] == speaker_id]
if speaker_records:
random_record = random.choice(speaker_records)
start_time = random_record['start_time']
end_time = random_record['end_time']
self.player.setPosition(int(start_time))
self.player.play()
self.player_timer = QTimer(self)
self.player_timer.setSingleShot(True)
self.player_timer.timeout.connect(self.player.stop)
self.player_timer.start(min(end_time, 10 * 1000)) # 10 seconds
def on_save_button_clicked(self):
speaker_names = []
for i in range(self.speaker_preview_row.count()):
item = self.speaker_preview_row.itemAt(i)
if item.layout():
for j in range(item.layout().count()):
sub_item = item.layout().itemAt(j)
widget = sub_item.widget()
if isinstance(widget, LineEdit):
speaker_names.append(widget.text())
unique_speakers = {entry['speaker'] for entry in self.identification_result}
original_speakers = sorted(unique_speakers)
speaker_mapping = dict(zip(original_speakers, speaker_names))
segments = []
if self.merge_speaker_sentences.isChecked():
previous_segment = None
for entry in self.identification_result:
speaker_name = speaker_mapping.get(entry['speaker'], entry['speaker'])
if previous_segment and previous_segment['speaker'] == speaker_name:
previous_segment['end_time'] = entry['end_time']
previous_segment['text'] += " " + entry['text']
else:
if previous_segment:
segment = Segment(
start=previous_segment['start_time'],
end=previous_segment['end_time'],
text=f"{previous_segment['speaker']}: {previous_segment['text']}"
)
segments.append(segment)
previous_segment = {
'start_time': entry['start_time'],
'end_time': entry['end_time'],
'speaker': speaker_name,
'text': entry['text']
}
if previous_segment:
segment = Segment(
start=previous_segment['start_time'],
end=previous_segment['end_time'],
text=f"{previous_segment['speaker']}: {previous_segment['text']}"
)
segments.append(segment)
else:
for entry in self.identification_result:
speaker_name = speaker_mapping.get(entry['speaker'], entry['speaker'])
segment = Segment(
start=entry['start_time'],
end=entry['end_time'],
text=f"{speaker_name}: {entry['text']}"
)
segments.append(segment)
new_transcript_id = self.transcription_service.copy_transcription(
self.transcription.id_as_uuid
)
self.transcription_service.update_transcription_as_completed(new_transcript_id, segments)
if self.transcriptions_updated_signal:
self.transcriptions_updated_signal.emit(new_transcript_id)
self.player.stop()
if self.player_timer:
self.player_timer.stop()
self.close()

View file

@ -36,8 +36,7 @@ from buzz.widgets.preferences_dialog.models.file_transcription_preferences impor
SENTENCE_END = re.compile(r'.*[.!?。!?]')
class TranscriptionWorker(QObject):
finished = pyqtSignal()
result_ready = pyqtSignal(list)
finished = pyqtSignal(list)
def __init__(self, transcription, transcription_options, transcription_service, regroup_string: str):
super().__init__()
@ -104,8 +103,7 @@ class TranscriptionWorker(QObject):
)
)
self.result_ready.emit(segments)
self.finished.emit()
self.finished.emit(segments)
class TranscriptionResizerWidget(QWidget):
@ -335,7 +333,7 @@ class TranscriptionResizerWidget(QWidget):
self.worker.finished.connect(self.thread.quit)
self.worker.finished.connect(self.worker.deleteLater)
self.thread.finished.connect(self.thread.deleteLater)
self.worker.result_ready.connect(self.on_transcription_completed)
self.worker.finished.connect(self.on_transcription_completed)
self.thread.start()

View file

@ -1,4 +1,5 @@
import logging
import platform
from typing import Optional
from uuid import UUID
@ -194,16 +195,18 @@ class TranscriptionViewerWidget(QWidget):
toolbar.addWidget(resize_button)
speaker_identification_button = QToolButton()
speaker_identification_button.setText(_("Identify Speakers"))
speaker_identification_button.setObjectName("speaker_identification_button")
speaker_identification_button.setIcon(SpeakerIdentificationIcon(self))
speaker_identification_button.setToolButtonStyle(
Qt.ToolButtonStyle.ToolButtonTextBesideIcon
)
speaker_identification_button.clicked.connect(self.on_speaker_identification_button_clicked)
# Underlying libs do not support intel Macs
if not (platform.system() == "Darwin" and platform.machine() == "x86_64"):
speaker_identification_button = QToolButton()
speaker_identification_button.setText(_("Identify Speakers"))
speaker_identification_button.setObjectName("speaker_identification_button")
speaker_identification_button.setIcon(SpeakerIdentificationIcon(self))
speaker_identification_button.setToolButtonStyle(
Qt.ToolButtonStyle.ToolButtonTextBesideIcon
)
speaker_identification_button.clicked.connect(self.on_speaker_identification_button_clicked)
toolbar.addWidget(speaker_identification_button)
toolbar.addWidget(speaker_identification_button)
layout.setMenuBar(toolbar)

View file

@ -88,7 +88,7 @@ combined to produce the final answer.
**BUZZ_TRANSLATION_API_KEY** - Api key of OpenAI compatible API to use for translation.
**BUZZ_MODEL_ROOT** - Root directory to store model files.
**BUZZ_MODEL_ROOT** - Root directory to store model files. You may also want to set `HF_HOME` to the same folder as some libraries used in Buzz download their models independently.
Defaults to [user_cache_dir](https://pypi.org/project/platformdirs/).
**BUZZ_FAVORITE_LANGUAGES** - Coma separated list of supported language codes to show on top of language list.

View file

@ -20,3 +20,5 @@ To import a file:
(See the [Live Recording section](https://chidiwilliams.github.io/buzz/docs/usage/live_recording) for more information about the task, language, and quality settings.)
[![Media File Import on Buzz](https://cdn.loom.com/sessions/thumbnails/cf263b099ac3481082bb56d19b7c87fe-with-play.gif)](https://www.loom.com/share/cf263b099ac3481082bb56d19b7c87fe "Media File Import on Buzz")
**💡 Tip:** It is recommended to always select language to transcribe to as automatic language detection may result in unexpected results.

View file

@ -0,0 +1,9 @@
---
title: Speaker identification
---
When transcript of some audio or video file is generated you can identify speakers in the transcript. Double-click the transcript in the list of transcripts to see additional options for editing and exporting.
Transcription view screen has option to identify speakers. Click on the "Identify speakers" button so see available options.
If audio file is still present on the system speaker identification will mark each speakers sentences with appropriate label. You can preview 10 seconds of some random sentence of the identified speaker and rename the automatically identified label to speakers real name. If "Merge speaker sentences" checkbox is selected when you save the speaker labels, all consecutive sentences of the same speaker wil lbe merged into one segment. Speaker identification is available since version 1.3.0.

116
poetry.lock generated
View file

@ -1275,44 +1275,47 @@ typing-inspect = ">=0.4.0,<1"
[[package]]
name = "datasets"
version = "2.2.1"
version = "3.5.0"
description = "HuggingFace community-driven open-source library of datasets"
optional = false
python-versions = "*"
python-versions = ">=3.9.0"
groups = ["main"]
files = [
{file = "datasets-2.2.1-py3-none-any.whl", hash = "sha256:1938f3e99599422de50b9b54fe802aca854ed130382dab0b3820c821f7ae6d5e"},
{file = "datasets-2.2.1.tar.gz", hash = "sha256:d362717c4394589b516c8f397ff20a6fe720454aed877ab61d06f3bc05df9544"},
{file = "datasets-3.5.0-py3-none-any.whl", hash = "sha256:b3b7f163acc6ac4e01a1b00eef26d48bd4039288ceea3601d169272bd5581006"},
{file = "datasets-3.5.0.tar.gz", hash = "sha256:9e39560e34f83a64e48ceca7adeb645ede3c3055c5cf48ed2b454f8ed2b89754"},
]
[package.dependencies]
aiohttp = "*"
dill = "*"
fsspec = {version = ">=2021.05.0", extras = ["http"]}
huggingface-hub = ">=0.1.0,<1.0.0"
multiprocess = "*"
dill = ">=0.3.0,<0.3.9"
filelock = "*"
fsspec = {version = ">=2023.1.0,<=2024.12.0", extras = ["http"]}
huggingface-hub = ">=0.24.0"
multiprocess = "<0.70.17"
numpy = ">=1.17"
packaging = "*"
pandas = "*"
pyarrow = ">=6.0.0"
requests = ">=2.19.0"
responses = "<0.19"
tqdm = ">=4.62.1"
pyarrow = ">=15.0.0"
pyyaml = ">=5.1"
requests = ">=2.32.2"
tqdm = ">=4.66.3"
xxhash = "*"
[package.extras]
apache-beam = ["apache-beam (>=2.26.0)"]
audio = ["librosa"]
benchmarks = ["numpy (==1.18.5)", "tensorflow (==2.3.0)", "torch (==1.6.0)", "transformers (==3.0.2)"]
dev = ["Pillow (>=6.2.1)", "Werkzeug (>=1.0.1)", "absl-py", "aiobotocore", "apache-beam (>=2.26.0)", "bert-score (>=0.3.6)", "black (>=22.0,<23.0)", "boto3", "botocore", "bs4", "conllu", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "flake8 (>=3.8.3)", "fsspec[s3]", "h5py", "importlib-resources ; python_version < \"3.7\"", "isort (>=5.0.0)", "jiwer", "langdetect", "librosa", "lxml", "lz4", "mauve-text", "moto[s3,server] (==2.0.4)", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "pytest", "pytest-datadir", "pytest-xdist", "pyyaml (>=5.3.1)", "rarfile (>=4.0)", "requests-file (>=1.5.1)", "rouge-score", "s3fs (==2021.08.1)", "sacrebleu", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "soundfile", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "torch", "torchaudio", "transformers", "zstandard"]
docs = ["s3fs"]
quality = ["black (>=22.0,<23.0)", "flake8 (>=3.8.3)", "isort (>=5.0.0)", "pyyaml (>=5.3.1)"]
s3 = ["boto3", "botocore", "fsspec", "s3fs"]
tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1)"]
tensorflow-gpu = ["tensorflow-gpu (>=2.2.0,!=2.6.0,!=2.6.1)"]
tests = ["Pillow (>=6.2.1)", "Werkzeug (>=1.0.1)", "absl-py", "aiobotocore", "apache-beam (>=2.26.0)", "bert-score (>=0.3.6)", "boto3", "botocore", "bs4", "conllu", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "fsspec[s3]", "h5py", "importlib-resources ; python_version < \"3.7\"", "jiwer", "langdetect", "librosa", "lxml", "lz4", "mauve-text", "moto[s3,server] (==2.0.4)", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "requests-file (>=1.5.1)", "rouge-score", "s3fs (==2021.08.1)", "sacrebleu", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "soundfile", "tensorflow (>=2.3,!=2.6.0,!=2.6.1)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "torch", "torchaudio", "transformers", "zstandard"]
audio = ["librosa", "soundfile (>=0.12.1)", "soxr (>=0.4.0) ; python_version >= \"3.9\""]
benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"]
dev = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (>=7.17.12,<8.0.0)", "faiss-cpu (>=1.8.0.post1)", "jax (>=0.3.14) ; sys_platform != \"win32\"", "jaxlib (>=0.3.14) ; sys_platform != \"win32\"", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyav", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0) ; python_version >= \"3.9\"", "sqlalchemy", "tensorflow (>=2.16.0) ; python_version >= \"3.10\"", "tensorflow (>=2.6.0)", "tensorflow (>=2.6.0) ; python_version < \"3.10\"", "tiktoken", "torch", "torch (>=2.0.0)", "torchdata", "torchvision", "transformers", "transformers (>=4.42.0)", "zstandard"]
docs = ["s3fs", "tensorflow (>=2.6.0)", "torch", "transformers"]
jax = ["jax (>=0.3.14)", "jaxlib (>=0.3.14)"]
pdfs = ["pdfplumber (>=0.11.4)"]
quality = ["ruff (>=0.3.0)"]
s3 = ["s3fs"]
tensorflow = ["tensorflow (>=2.6.0)"]
tensorflow-gpu = ["tensorflow (>=2.6.0)"]
tests = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (>=7.17.12,<8.0.0)", "faiss-cpu (>=1.8.0.post1)", "jax (>=0.3.14) ; sys_platform != \"win32\"", "jaxlib (>=0.3.14) ; sys_platform != \"win32\"", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyav", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0) ; python_version >= \"3.9\"", "sqlalchemy", "tensorflow (>=2.16.0) ; python_version >= \"3.10\"", "tensorflow (>=2.6.0) ; python_version < \"3.10\"", "tiktoken", "torch (>=2.0.0)", "torchdata", "torchvision", "transformers (>=4.42.0)", "zstandard"]
tests-numpy2 = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (>=7.17.12,<8.0.0)", "jax (>=0.3.14) ; sys_platform != \"win32\"", "jaxlib (>=0.3.14) ; sys_platform != \"win32\"", "joblib (<1.3.0)", "joblibspark", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyav", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0) ; python_version >= \"3.9\"", "sqlalchemy", "tiktoken", "torch (>=2.0.0)", "torchdata", "torchvision", "transformers (>=4.42.0)", "zstandard"]
torch = ["torch"]
vision = ["Pillow (>=6.2.1)"]
vision = ["Pillow (>=9.4.0)"]
[[package]]
name = "decorator"
@ -1422,14 +1425,14 @@ dev = ["coverage", "flake8", "pdoc3", "torchvision"]
[[package]]
name = "dill"
version = "0.3.9"
version = "0.3.8"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
groups = ["main", "dev"]
files = [
{file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"},
{file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"},
{file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"},
{file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"},
]
[package.extras]
@ -1930,14 +1933,14 @@ files = [
[[package]]
name = "fsspec"
version = "2025.3.0"
version = "2024.12.0"
description = "File-system specification"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
{file = "fsspec-2025.3.0-py3-none-any.whl", hash = "sha256:efb87af3efa9103f94ca91a7f8cb7a4df91af9f74fc106c9c7ea0efd7277c1b3"},
{file = "fsspec-2025.3.0.tar.gz", hash = "sha256:a935fd1ea872591f2b5148907d103488fc523295e6c64b835cfad8c3eca44972"},
{file = "fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2"},
{file = "fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f"},
]
[package.dependencies]
@ -1967,7 +1970,7 @@ sftp = ["paramiko"]
smb = ["smbprotocol"]
ssh = ["paramiko"]
test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"]
test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"]
test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"]
test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"]
tqdm = ["tqdm"]
@ -4046,32 +4049,28 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""}
[[package]]
name = "multiprocess"
version = "0.70.17"
version = "0.70.16"
description = "better multiprocessing and multithreading in Python"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
{file = "multiprocess-0.70.17-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ddb24e5bcdb64e90ec5543a1f05a39463068b6d3b804aa3f2a4e16ec28562d6"},
{file = "multiprocess-0.70.17-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d729f55198a3579f6879766a6d9b72b42d4b320c0dcb7844afb774d75b573c62"},
{file = "multiprocess-0.70.17-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2c82d0375baed8d8dd0d8c38eb87c5ae9c471f8e384ad203a36f095ee860f67"},
{file = "multiprocess-0.70.17-pp38-pypy38_pp73-macosx_10_9_arm64.whl", hash = "sha256:a22a6b1a482b80eab53078418bb0f7025e4f7d93cc8e1f36481477a023884861"},
{file = "multiprocess-0.70.17-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:349525099a0c9ac5936f0488b5ee73199098dac3ac899d81d326d238f9fd3ccd"},
{file = "multiprocess-0.70.17-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:27b8409c02b5dd89d336107c101dfbd1530a2cd4fd425fc27dcb7adb6e0b47bf"},
{file = "multiprocess-0.70.17-pp39-pypy39_pp73-macosx_10_13_arm64.whl", hash = "sha256:2ea0939b0f4760a16a548942c65c76ff5afd81fbf1083c56ae75e21faf92e426"},
{file = "multiprocess-0.70.17-pp39-pypy39_pp73-macosx_10_13_x86_64.whl", hash = "sha256:2b12e081df87ab755190e227341b2c3b17ee6587e9c82fecddcbe6aa812cd7f7"},
{file = "multiprocess-0.70.17-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:a0f01cd9d079af7a8296f521dc03859d1a414d14c1e2b6e676ef789333421c95"},
{file = "multiprocess-0.70.17-py310-none-any.whl", hash = "sha256:38357ca266b51a2e22841b755d9a91e4bb7b937979a54d411677111716c32744"},
{file = "multiprocess-0.70.17-py311-none-any.whl", hash = "sha256:2884701445d0177aec5bd5f6ee0df296773e4fb65b11903b94c613fb46cfb7d1"},
{file = "multiprocess-0.70.17-py312-none-any.whl", hash = "sha256:2818af14c52446b9617d1b0755fa70ca2f77c28b25ed97bdaa2c69a22c47b46c"},
{file = "multiprocess-0.70.17-py313-none-any.whl", hash = "sha256:20c28ca19079a6c879258103a6d60b94d4ffe2d9da07dda93fb1c8bc6243f522"},
{file = "multiprocess-0.70.17-py38-none-any.whl", hash = "sha256:1d52f068357acd1e5bbc670b273ef8f81d57863235d9fbf9314751886e141968"},
{file = "multiprocess-0.70.17-py39-none-any.whl", hash = "sha256:c3feb874ba574fbccfb335980020c1ac631fbf2a3f7bee4e2042ede62558a021"},
{file = "multiprocess-0.70.17.tar.gz", hash = "sha256:4ae2f11a3416809ebc9a48abfc8b14ecce0652a0944731a1493a3c1ba44ff57a"},
{file = "multiprocess-0.70.16-pp310-pypy310_pp73-macosx_10_13_x86_64.whl", hash = "sha256:476887be10e2f59ff183c006af746cb6f1fd0eadcfd4ef49e605cbe2659920ee"},
{file = "multiprocess-0.70.16-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d951bed82c8f73929ac82c61f01a7b5ce8f3e5ef40f5b52553b4f547ce2b08ec"},
{file = "multiprocess-0.70.16-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37b55f71c07e2d741374998c043b9520b626a8dddc8b3129222ca4f1a06ef67a"},
{file = "multiprocess-0.70.16-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba8c31889abf4511c7308a8c52bb4a30b9d590e7f58523302ba00237702ca054"},
{file = "multiprocess-0.70.16-pp39-pypy39_pp73-macosx_10_13_x86_64.whl", hash = "sha256:0dfd078c306e08d46d7a8d06fb120313d87aa43af60d66da43ffff40b44d2f41"},
{file = "multiprocess-0.70.16-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e7b9d0f307cd9bd50851afaac0dba2cb6c44449efff697df7c7645f7d3f2be3a"},
{file = "multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02"},
{file = "multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a"},
{file = "multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e"},
{file = "multiprocess-0.70.16-py38-none-any.whl", hash = "sha256:a71d82033454891091a226dfc319d0cfa8019a4e888ef9ca910372a446de4435"},
{file = "multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3"},
{file = "multiprocess-0.70.16.tar.gz", hash = "sha256:161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1"},
]
[package.dependencies]
dill = ">=0.3.9"
dill = ">=0.3.8"
[[package]]
name = "musdb"
@ -6492,25 +6491,6 @@ design = ["optuna (>=2.10.0)"]
docs = ["numpydoc", "sphinx (!=1.3.1)"]
tests = ["pytest (<8)", "pytest-cov", "scipy (>=1.1)"]
[[package]]
name = "responses"
version = "0.18.0"
description = "A utility library for mocking out the `requests` Python library."
optional = false
python-versions = ">=3.7"
groups = ["main"]
files = [
{file = "responses-0.18.0-py3-none-any.whl", hash = "sha256:15c63ad16de13ee8e7182d99c9334f64fd81f1ee79f90748d527c28f7ca9dd51"},
{file = "responses-0.18.0.tar.gz", hash = "sha256:380cad4c1c1dc942e5e8a8eaae0b4d4edf708f4f010db8b7bcfafad1fcd254ff"},
]
[package.dependencies]
requests = ">=2.0,<3.0"
urllib3 = ">=1.25.10"
[package.extras]
tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=4.6)", "pytest-cov", "pytest-localserver", "types-mock", "types-requests"]
[[package]]
name = "retrying"
version = "1.3.4"
@ -8843,4 +8823,4 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.1"
python-versions = ">=3.10,<3.13"
content-hash = "ffcf49c01fd9b29be1db0ee0a684e71c3ecb005f832d58dcc283089843421d16"
content-hash = "80185c3d6c54b658a79b574f19061da7aec5bd0aeb473b9c1880c205521ec825"

1
whisper_diarization Submodule

@ -0,0 +1 @@
Subproject commit 6c9047dd7334c48acde62042890fd357117a9f55