Repository Analysis

chidiwilliams/buzz

Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAI's Whisper.

24.9 Moderate AI signal View on GitHub
24.9
Adjusted Score
24.9
Raw Score
100%
Time Factor
2026-05-16
Last Push
19,458
Stars
Python
Language
49,430
Lines of Code
228
Files
1120
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 2HIGH 1MEDIUM 33LOW 1084

Pattern Findings

1120 matches across 13 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers874 hits · 901 pts
SeverityFileLineSnippet
LOWtests/cache_test.py10 def test_should_save_and_load(self, tmp_path):
LOWtests/conftest.py56def transcription_segment_dao(db) -> TranscriptionSegmentDAO:
LOWtests/gui_test.py53 def test_should_show_sorted_whisper_languages(self, qtbot):
LOWtests/gui_test.py59 def test_should_select_en_as_default_language(self, qtbot):
LOWtests/gui_test.py64 def test_should_select_detect_language_as_default(self, qtbot):
LOWtests/gui_test.py82 def test_select_default_mic_when_no_default(self):
LOWtests/gui_test.py96 def test_should_check_for_updates(self, qtbot: QtBot):
LOWtests/gui_test.py114 def test_should_update_advanced_settings(self, qtbot: QtBot):
LOWtests/gui_test.py150 def test_should_update_selected_model_on_type(self, qtbot: QtBot):
LOWtests/gui_test.py163 def test_should_show_list_of_models(self, qtbot: QtBot):
LOWtests/gui_test.py175 def test_should_select_model_from_list(self, qtbot: QtBot):
LOWtests/gui_test.py213 def _set_text_and_wait_response(qtbot: QtBot, widget: HuggingFaceSearchLineEdit):
LOWtests/gui_test.py220 def test_should_update_model_type(self, qtbot):
LOWtests/recording_test.py9 def test_initial_buffer_is_empty(self):
LOWtests/recording_test.py15 def test_initial_accumulation_size_is_zero(self):
LOWtests/recording_test.py26 def test_emits_amplitude_changed(self):
LOWtests/recording_test.py54 def test_emits_average_amplitude_when_buffer_full(self):
LOWtests/recording_test.py67 def test_resets_buffer_after_emitting_average(self):
LOWtests/recording_test.py77 def test_does_not_emit_average_before_buffer_full(self):
LOWtests/recording_test.py89 def test_average_amplitude_is_rms_of_accumulated_buffer(self):
LOWtests/recording_test.py106 def test_accumulation_size_set_from_sample_rate(self):
LOWtests/model_loader_test.py47 def test_empty_returns_english(self):
LOWtests/model_loader_test.py50 def test_two_letter_known_code(self):
LOWtests/model_loader_test.py55 def test_three_letter_code_returned_as_is(self):
LOWtests/model_loader_test.py59 def test_unknown_two_letter_code_returned_as_is(self):
LOWtests/model_loader_test.py83 def test_mms_case_insensitive(self):
LOWtests/model_loader_test.py91 def test_to_faster_whisper_model_size_large(self):
LOWtests/model_loader_test.py94 def test_to_faster_whisper_model_size_tiny(self):
LOWtests/model_loader_test.py100 def test_to_whisper_cpp_model_size_large(self):
LOWtests/model_loader_test.py103 def test_to_whisper_cpp_model_size_tiny(self):
LOWtests/model_loader_test.py186 def test_default_respects_model_type_env(self, monkeypatch):
LOWtests/model_loader_test.py191 def test_default_respects_model_size_env(self, monkeypatch):
LOWtests/model_loader_test.py196 def test_default_invalid_model_type_env_falls_back(self, monkeypatch):
LOWtests/model_loader_test.py201 def test_default_invalid_model_size_env_falls_back(self, monkeypatch):
LOWtests/model_loader_test.py206 def test_get_local_model_path_openai_api(self):
LOWtests/model_loader_test.py216 def test_unknown_size_returns_none(self):
LOWtests/model_loader_test.py220 def test_all_defined_sizes_have_values(self):
LOWtests/model_loader_test.py238 def test_whisper_model_not_downloaded(self):
LOWtests/model_loader_test.py243 def test_whisper_model_downloaded(self):
LOWtests/model_loader_test.py248 def test_openai_api_not_deletable(self):
LOWtests/model_loader_test.py252 def test_hugging_face_not_deletable(self):
LOWtests/model_loader_test.py261 def test_whisper_cpp_file_not_exists(self):
LOWtests/model_loader_test.py267 def test_whisper_file_not_exists(self):
LOWtests/model_loader_test.py272 def test_whisper_file_too_small(self):
LOWtests/model_loader_test.py336 def test_faster_whisper_opens_grandparent_directory(self):
LOWtests/model_loader_test.py344 def test_no_model_path_does_nothing(self):
LOWtests/model_loader_test.py353 def test_whisper_model_removes_file(self, tmp_path):
LOWtests/model_loader_test.py361 def test_whisper_cpp_custom_removes_file(self, tmp_path):
LOWtests/model_loader_test.py369 def test_whisper_cpp_non_custom_removes_bin_file(self, tmp_path):
LOWtests/model_loader_test.py377 def test_whisper_cpp_non_custom_removes_coreml_files(self, tmp_path):
LOWtests/model_loader_test.py427 def test_returns_false_when_no_marker(self, tmp_path):
LOWtests/model_loader_test.py430 def test_returns_true_when_marker_present(self, tmp_path):
LOWtests/model_loader_test.py434 def test_returns_false_for_nonexistent_dir(self, tmp_path):
LOWtests/model_loader_test.py72 def test_various_language_codes(self, code, expected):
LOWtests/model_loader_test.py114 def test_supports_initial_prompt(self):
LOWtests/model_loader_test.py142 def test_is_manually_downloadable(self):
LOWtests/model_loader_test.py288 def test_faster_whisper_not_found(self):
LOWtests/model_loader_test.py293 def test_hugging_face_not_found(self):
LOWtests/model_loader_test.py318 def test_whisper_opens_parent_directory(self):
LOWtests/model_loader_test.py325 def test_hugging_face_opens_grandparent_directory(self):
814 more matches not shown…
Excessive Try-Catch Wrapping78 hits · 84 pts
SeverityFileLineSnippet
MEDIUMhatch_build.py221 print(f"Error building whisper.cpp: {e}", file=sys.stderr)
MEDIUMhatch_build.py226 print("Error: 'make' command not found. Please ensure make is installed.", file=sys.stderr)
MEDIUMtests/recording_transcriber_test.py117def callback():
LOWtests/recording_transcriber_test.py121 except Exception as e:
LOWtests/widgets/main_window_test.py115 except Exception:
LOWtests/widgets/main_window_test.py138 except Exception:
LOWbuzz/recording.py37 except Exception as e:
MEDIUMbuzz/recording.py27def start_recording(self):
LOWbuzz/sounddevice_player.py134 except Exception:
LOWbuzz/sounddevice_player.py159 except Exception:
LOWbuzz/sounddevice_player.py203 except Exception:
MEDIUMbuzz/cli.py44 print(f"Error: {str(exc)}\n", file=sys.stderr)
LOWbuzz/model_loader.py28except Exception as e:
LOWbuzz/model_loader.py70except Exception as e:
LOWbuzz/model_loader.py114 except Exception as e:
LOWbuzz/model_loader.py300 except Exception:
LOWbuzz/model_loader.py540 except Exception as exc:
LOWbuzz/model_loader.py576 except Exception as exc:
LOWbuzz/model_loader.py793 except Exception as exc:
LOWbuzz/model_loader.py847 except Exception as e:
LOWbuzz/model_loader.py874 except Exception as e:
LOWbuzz/model_loader.py878 except Exception as e:
LOWbuzz/model_loader.py973 except Exception:
LOWbuzz/ffmpeg_video_player.py62 except Exception:
LOWbuzz/ffmpeg_video_player.py151 except Exception:
LOWbuzz/ffmpeg_video_player.py161 except Exception:
LOWbuzz/ffmpeg_video_player.py194 except Exception:
LOWbuzz/ffmpeg_video_player.py212 except Exception:
LOWbuzz/translator.py70 except Exception as e:
LOWbuzz/translator.py107 except Exception as e:
LOWbuzz/file_transcriber_queue_worker.py150 except Exception as e:
LOWbuzz/file_transcriber_queue_worker.py165 except Exception:
LOWbuzz/file_transcriber_queue_worker.py275 except Exception:
LOWbuzz/transcriber/whisper_cpp.py171 except Exception as e:
LOWbuzz/transcriber/whisper_cpp.py379 except Exception as e:
LOWbuzz/transcriber/whisper_cpp.py386 except Exception as e:
LOWbuzz/transcriber/file_transcriber.py54 except Exception as exc:
LOWbuzz/transcriber/file_transcriber.py85 except Exception as exc:
LOWbuzz/transcriber/file_transcriber.py125 except Exception as exc:
LOWbuzz/transcriber/recording_transcriber.py297 except Exception as e:
LOWbuzz/transcriber/recording_transcriber.py323 except Exception as exc:
LOWbuzz/transcriber/recording_transcriber.py472 except Exception as e:
LOWbuzz/transcriber/whisper_file_transcriber.py206 except Exception as e:
LOWbuzz/transcriber/whisper_file_transcriber.py416 except Exception as e:
LOWbuzz/transcriber/whisper_file_transcriber.py422 except Exception as e:
LOWbuzz/transcriber/whisper_file_transcriber.py436 except Exception as e:
LOW…zz/transcriber/local_whisper_cpp_server_transcriber.py90 except Exception as e:
LOWbuzz/widgets/main_window.py306 except Exception as exc:
LOWbuzz/widgets/main_window.py454 except Exception as e:
LOWbuzz/widgets/main_window.py463 except Exception as e:
LOWbuzz/widgets/main_window.py484 except Exception as e:
LOWbuzz/widgets/video_player.py44 except Exception:
LOWbuzz/widgets/presentation_window.py99 except Exception as e:
LOWbuzz/widgets/update_dialog.py211 except Exception as e:
LOWbuzz/widgets/update_dialog.py249 except Exception as e:
LOWbuzz/widgets/audio_player.py46 except Exception:
LOWbuzz/widgets/transcription_tasks_table_widget.py503 except Exception:
LOWbuzz/widgets/transcription_tasks_table_widget.py515 except Exception:
LOWbuzz/widgets/transcription_tasks_table_widget.py700 except Exception as e:
LOWbuzz/widgets/recording_transcriber_widget.py361 except Exception as e:
18 more matches not shown…
Unused Imports77 hits · 67 pts
SeverityFileLineSnippet
LOWtests/recording_test.py2
LOWtests/mock_qt.py5
LOWtests/model_loader_test.py1
LOWtests/model_loader_test.py3
LOWtests/model_loader_test.py4
LOWtests/model_loader_test.py6
LOWtests/model_loader_test.py714
LOWtests/model_loader_test.py724
LOWtests/recording_transcriber_test.py2
LOWtests/recording_transcriber_test.py5
LOWtests/translator_test.py2
LOWtests/translator_test.py4
LOWtests/translator_test.py11
LOWtests/cli_test.py2
LOWtests/update_checker_test.py6
LOWtests/transcriber/recording_transcriber_test.py5
LOWtests/transcriber/recording_transcriber_test.py14
LOWtests/transcriber/recording_transcriber_test.py62
LOWtests/transcriber/transformers_whisper_test.py1
LOWtests/transcriber/transformers_whisper_test.py2
LOWtests/transcriber/transformers_whisper_test.py3
LOW…ranscriber/openai_whisper_api_file_transcriber_test.py10
LOWtests/settings/settings_test.py1
LOWtests/settings/settings_test.py2
LOWtests/db/entity/transcription_test.py1
LOWtests/db/service/transcription_service_test.py2
LOWtests/db/service/transcription_service_test.py3
LOWtests/widgets/update_dialog_test.py4
LOWtests/widgets/transcription_tasks_table_widget_test.py10
LOWtests/widgets/transcription_tasks_table_widget_test.py14
LOWtests/widgets/speaker_identification_widget_test.py1
LOWtests/widgets/recording_transcriber_widget_test.py10
LOWtests/widgets/presentation_window_test.py2
LOWtests/widgets/presentation_window_test.py3
LOWtests/widgets/presentation_window_test.py5
LOWtests/widgets/presentation_window_test.py5
LOWtests/widgets/video_player_test.py4
LOWtests/widgets/hugging_face_search_line_edit_test.py5
LOWtests/widgets/menu_bar_test.py1
LOWtests/store/keyring_store_test.py1
LOWtests/store/keyring_store_test.py5
LOWtests/store/keyring_store_test.py5
LOWbuzz/transformers_whisper.py3
LOWbuzz/transformers_whisper.py8
LOWbuzz/transformers_whisper.py375
LOWbuzz/transformers_whisper.py267
LOWbuzz/whisper_audio.py5
LOWbuzz/locale.py1
LOWbuzz/locale.py2
LOWbuzz/translator.py7
LOWbuzz/buzz.py7
LOWbuzz/buzz.py12
LOWbuzz/transcriber/recording_transcriber.py15
LOWbuzz/transcriber/openai_whisper_api_file_transcriber.py11
LOWbuzz/transcriber/whisper_file_transcriber.py10
LOWbuzz/transcriber/whisper_file_transcriber.py20
LOWbuzz/transcriber/whisper_file_transcriber.py21
LOW…zz/transcriber/local_whisper_cpp_server_transcriber.py7
LOWbuzz/settings/settings.py3
LOWbuzz/widgets/openai_api_key_line_edit.py1
17 more matches not shown…
Decorative Section Separators17 hits · 57 pts
SeverityFileLineSnippet
MEDIUMappimage/build-appimage.sh33# ── Step 1: PyInstaller bundle ──────────────────────────────────────────────
MEDIUMappimage/build-appimage.sh42# ── Step 2: Create AppDir ───────────────────────────────────────────────────
MEDIUMappimage/build-appimage.sh53# ── Step 3: Desktop integration ─────────────────────────────────────────────
MEDIUMappimage/build-appimage.sh79# ── Step 4: AppRun entry point ──────────────────────────────────────────────
MEDIUMappimage/build-appimage.sh94# ── Step 5: Build AppImage ──────────────────────────────────────────────────
MEDIUMbuzz/widgets/video_player.py126 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/video_player.py128 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/video_player.py148 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/video_player.py150 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/video_player.py160 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/video_player.py162 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py120 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py122 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py152 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py154 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py214 # ------------------------------------------------------------------
MEDIUMbuzz/widgets/audio_player.py216 # ------------------------------------------------------------------
Redundant / Tautological Comments23 hits · 35 pts
SeverityFileLineSnippet
LOWtests/conftest.py10# Set multiprocessing to use 'spawn' instead of 'fork' on Linux
LOW…_viewer/transcription_viewer_widget_additional_test.py300 # Set speed to a known value below maximum to ensure we can increase
LOW…_viewer/transcription_viewer_widget_additional_test.py317 # Set speed to a known value above minimum to ensure we can decrease
LOWbuzz/transformers_whisper.py252 # Check if this is a PEFT model
LOWbuzz/transformers_whisper.py261 # Check if user wants reduced GPU memory usage (8-bit quantization)
LOWbuzz/model_loader.py94 # Check if it's the same file
LOWbuzz/model_loader.py711 # Check if there's a single top-level directory
LOWbuzz/model_loader.py895 # Check if server supports Range requests before starting download
LOWbuzz/file_transcriber_queue_worker.py249 # Check if the error indicates cancellation
LOWbuzz/transcriber/whisper_cpp.py52 # Check if file format is supported, convert to WAV if not
LOWbuzz/transcriber/whisper_cpp.py327 # Check if token starts with space - indicates new word
LOWbuzz/transcriber/recording_transcriber.py122 # Check if user wants reduced GPU memory usage (int8 quantization)
LOWbuzz/transcriber/whisper_file_transcriber.py133 # Check if the process was terminated (likely due to cancellation)
LOWbuzz/transcriber/whisper_file_transcriber.py182 # Check if the file has audio streams before processing
LOWbuzz/transcriber/whisper_file_transcriber.py282 # Check if user wants reduced GPU memory usage (int8 quantization)
LOWbuzz/widgets/transcription_tasks_table_widget.py686 # Check if the task can be restarted
LOWbuzz/widgets/transcription_tasks_table_widget.py791 # Add the task to the queue worker
LOW…widgets/transcriber/transcription_options_group_box.py289 # Check if this is an MMS model
LOW…ription_viewer/transcription_segments_editor_widget.py168 # Check if new start overlaps with previous segment's end
LOW…ription_viewer/transcription_segments_editor_widget.py188 # Check if new end overlaps with next segment's start
LOW…s/transcription_viewer/transcription_resizer_widget.py57 # Check if the language uses spaces between words
LOW…ts/transcription_viewer/transcription_viewer_widget.py613 # Set position to the start of the segment
LOW…ts/transcription_viewer/transcription_viewer_widget.py1236 # Check if we're editing the currently selected segment
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippet
MEDIUMtests/model_loader_test.py690 # Create a fake zip with a single top-level directory inside
MEDIUMtests/transcriber/file_transcriber_queue_worker_test.py145 # Create a temporary file to simulate speech extraction output
MEDIUMtests/transcriber/whisper_file_transcriber_test.py43 # Create a temporary text file (not a valid media file)
MEDIUMtests/db/dao/transcription_dao_test.py17 # Create the transcription table with the new schema
MEDIUMbuzz/transformers_whisper.py404 # Create a simple processor-like object that the pipeline expects
MEDIUMbuzz/widgets/transcription_tasks_table_widget.py419 # Create a mapping of column IDs to their saved visual positions
MEDIUMbuzz/widgets/transcription_tasks_table_widget.py779 # Create the new task
MEDIUM…ts/transcription_viewer/transcription_viewer_widget.py213 # Create a better current segment display that handles long text
MEDIUMbuzz/store/keyring_store.py55 # Create a socket pair for receiving the secret
Deep Nesting32 hits · 26 pts
SeverityFileLineSnippet
LOWhatch_build.py13
LOWtests/transcriber/recording_transcriber_test.py88
LOWbuzz/model_loader.py652
LOWbuzz/model_loader.py800
LOWbuzz/ffmpeg_video_player.py107
LOWbuzz/translator.py147
LOWbuzz/cuda_setup.py24
LOWbuzz/file_transcriber_queue_worker.py93
LOWbuzz/transcriber/whisper_cpp.py37
LOWbuzz/transcriber/whisper_cpp.py209
LOWbuzz/transcriber/file_transcriber.py182
LOWbuzz/transcriber/recording_transcriber.py82
LOWbuzz/transcriber/openai_whisper_api_file_transcriber.py193
LOWbuzz/transcriber/whisper_file_transcriber.py147
LOWbuzz/transcriber/whisper_file_transcriber.py425
LOWbuzz/widgets/recording_transcriber_widget.py781
LOWbuzz/widgets/recording_transcriber_widget.py816
LOWbuzz/widgets/recording_transcriber_widget.py862
LOWbuzz/widgets/recording_transcriber_widget.py940
LOWbuzz/widgets/recording_transcriber_widget.py1014
LOWbuzz/widgets/recording_transcriber_widget.py1139
LOW…/transcription_viewer/speaker_identification_widget.py152
LOW…/transcription_viewer/speaker_identification_widget.py623
LOW…/transcription_viewer/speaker_identification_widget.py687
LOW…ription_viewer/transcription_segments_editor_widget.py42
LOW…ription_viewer/transcription_segments_editor_widget.py145
LOW…ts/transcription_viewer/transcription_viewer_widget.py1121
LOW…ts/transcription_viewer/transcription_viewer_widget.py1258
LOW…ts/transcription_viewer/transcription_viewer_widget.py1420
LOW…ts/transcription_viewer/transcription_viewer_widget.py1459
LOW…ts/transcription_viewer/transcription_viewer_widget.py1507
LOWbuzz/store/keyring_store.py31
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippet
CRITICAL…ranscriber/openai_whisper_api_file_transcriber_test.py121 mock_openai_client.return_value.audio.transcriptions.create.assert_called()
CRITICAL…widgets/transcriber/transcription_options_group_box.py225 self.transcription_options.model.whisper_model_size.value.title()
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippet
HIGH…ferences_dialog/shortcuts_editor_preferences_widget.py41 self.shortcuts.set(shortcut, sequence.toString())
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippet
LOW.github/workflows/ci.yml381# with:
LOW.github/workflows/ci.yml401#
LOWappimage/build-appimage.sh1#!/usr/bin/env bash
Verbosity Indicators2 hits · 3 pts
SeverityFileLineSnippet
LOW…/transcription_viewer/speaker_identification_widget.py445 # Step 1: Identify speakers
LOW…/transcription_viewer/speaker_identification_widget.py500 # Step 2: Name speakers
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWappimage/build-appimage.sh17# Usage:
AI Slop Vocabulary1 hit · 0 pts
SeverityFileLineSnippet
MEDIUMtests/widgets/transcription_viewer_test.py994 """Test comprehensive search clear functionality including UI state reset"""