whisper
Sprache-zu-Text-Transkription mit whisper.cpp, OpenAIs Whisper-Modell
Maintainer: tobilg
Installation und Laden
INSTALL whisper FROM community;LOAD whisper;Beispiel
-- Transcribe an audio fileD SELECT whisper_transcribe('audio.wav', 'tiny.en');┌──────────────────────────────────────────────────┐│ whisper_transcribe(...) ││ varchar │├──────────────────────────────────────────────────┤│ Hello, this is a test of the whisper extension. │└──────────────────────────────────────────────────┘
-- Get detailed transcription segments with timestampsD SELECT * FROM whisper_transcribe_segments('audio.wav', 'tiny.en');┌────────────┬────────────┬──────────┬────────────────────┬────────────┬──────────┐│ segment_id │ start_time │ end_time │ text │ confidence │ language ││ int32 │ double │ double │ varchar │ double │ varchar │├────────────┼────────────┼──────────┼────────────────────┼────────────┼──────────┤│ 0 │ 0.00 │ 2.50 │ Hello, this is a │ 0.95 │ en ││ 1 │ 2.50 │ 4.00 │ test of whisper. │ 0.92 │ en │└────────────┴────────────┴──────────┴────────────────────┴────────────┴──────────┘
-- List available modelsD SELECT model_name, size_mb, is_downloaded FROM whisper_list_models() LIMIT 3;┌────────────┬─────────┬───────────────┐│ model_name │ size_mb │ is_downloaded ││ varchar │ int64 │ boolean │├────────────┼─────────┼───────────────┤│ tiny │ 75 │ false ││ tiny.en │ 75 │ true ││ base │ 142 │ false │└────────────┴─────────┴───────────────┘Über whisper
Eine DuckDB-Erweiterung für Sprache-zu-Text-Transkription mit whisper.cpp, dem C/C++-Port von OpenAIs Whisper-Modell.
Transkribieren Sie Audiodateien direkt aus SQL-Abfragen in DuckDB und verarbeiten und analysieren Sie Audiodaten zusammen mit Ihren übrigen Daten.
Funktionen
- Audiodateien transkribieren (WAV, MP3, FLAC, OGG und weitere)
- Live-Aufnahme und Transkription vom Mikrofon
- Sprache-zu-SQL: natürliche Sprachfragen sprechen und Abfrageergebnisse erhalten
- Unterstützung aller Whisper-Modelle (tiny, base, small, medium, large)
- Detaillierte Transkriptionssegmente mit Zeitstempeln und Konfidenzwerten
- Automatische Spracherkennung oder Angabe der Zielsprache
- Funktioniert mit Dateipfaden, BLOB-Daten oder entfernten URLs
Schnellstart
Ein Modell herunterladen
Modelle müssen vor der Verwendung heruntergeladen werden. Sie liegen in ~/.duckdb/whisper/models/.
mkdir -p ~/.duckdb/whisper/modelscurl -L -o ~/.duckdb/whisper/models/ggml-tiny.en.bin \ https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.en.binVerfügbare Modelle und Downloadstatus prüfen:
SELECT * FROM whisper_list_models();Eine Audiodatei transkribieren
-- Simple transcriptionSELECT whisper_transcribe('audio.wav', 'tiny.en');
-- Get detailed segments with timestampsSELECT * FROM whisper_transcribe_segments('audio.wav', 'tiny.en');
-- Translate foreign audio to EnglishSELECT whisper_translate('german_speech.mp3', 'small');Anwendungsbeispiele
Entfernte Audio transkribieren
INSTALL httpfs;LOAD httpfs;
SELECT whisper_transcribe(content, 'tiny.en')FROM read_blob('https://example.com/audio.mp3');Mehrere Dateien stapelweise transkribieren
SELECT file, whisper_transcribe(file, 'tiny.en') as transcriptFROM glob('audio/*.wav');In Transkriptionen suchen
SELECT * FROM whisper_transcribe_segments('meeting.wav', 'base.en')WHERE text ILIKE '%action item%';Untertitel erzeugen (SRT-Format)
SELECT segment_id + 1 as id, printf('%02d:%02d:%02d,%03d', (start_time/3600)::int, ((start_time%3600)/60)::int, (start_time%60)::int, ((start_time - start_time::int) * 1000)::int ) || ' --> ' || printf('%02d:%02d:%02d,%03d', (end_time/3600)::int, ((end_time%3600)/60)::int, (end_time%60)::int, ((end_time - end_time::int) * 1000)::int ) as timestamp, trim(text) as textFROM whisper_transcribe_segments('video.mp4', 'small.en');Aufnahme (erfordert Mikrofon)
Audiogerät einrichten
Vor der Nutzung von Mikrofonaufnahme oder Sprachabfragen:
-- List all available audio input devicesSELECT * FROM whisper_list_devices();
-- Set the device ID (use a device_id from the list above)SET whisper_device_id = 0;
-- Verify your microphone is workingSELECT whisper_mic_level(3);Aufnehmen und transkribieren
-- Record for 5 secondsSELECT whisper_record(5, 'tiny.en');
-- Record until silence (max 30 seconds)SELECT whisper_record_auto(30);
-- Record and translate to EnglishSELECT whisper_record_translate(5, 'small');Sprache-zu-SQL (experimentell)
Sprechen Sie natürliche Fragen zu Ihren Daten und erhalten Sie SQL-Abfrageergebnisse.
Erfordert lokal laufenden text-to-sql-proxy.
-- Create test dataCREATE TABLE customers (id INT, name VARCHAR, revenue DECIMAL);INSERT INTO customers VALUES (1, 'Acme', 100000), (2, 'Beta', 50000);
-- Get SQL from voice (doesn't execute)SELECT whisper_voice_to_sql();
-- Execute voice query directlyFROM whisper_voice_query();
-- Include generated SQL in resultsFROM whisper_voice_query_with_sql();Verfügbare Modelle
| Model | Size | Description |
|---|---|---|
| tiny/tiny.en | ~75MB | Fastest |
| base/base.en | ~142MB | Fast |
| small/small.en | ~466MB | Good balance |
| medium/medium.en | ~1.5GB | High quality |
| large-v1/v2/v3 | ~2.9GB | Best quality |
| large-v3-turbo | ~1.6GB | Fast + accurate |
Modelle mit der Endung .en sind für Englisch optimiert.
Unterstützte Audioformate
Die Erweiterung nutzt FFmpeg zur Audiodecodierung: WAV, MP3, FLAC, OGG/Vorbis, AAC/M4A und viele weitere. Audio wird automatisch auf 16 kHz Mono konvertiert, wie von Whisper verlangt.
Funktionsreferenz
Transkriptionsfunktionen
whisper_transcribe(audio, [model])- Transkribiert Audio und gibt den vollständigen Text zurückwhisper_translate(audio, [model])- Übersetzt Audio aus beliebiger Sprache ins Englischewhisper_transcribe_segments(audio, [model], [language], [translate])- Liefert eine Tabelle von Segmenten mit Zeitstempeln
Aufnahmefunktionen
whisper_list_devices()- Listet verfügbare Audioeingabegerätewhisper_record(duration_seconds, [model], [device_id])- Nimmt auf und transkribiertwhisper_record_auto(max_seconds, [silence_seconds], [model], [threshold], [device_id])- Nimmt bis zur Stille aufwhisper_record_translate(duration_seconds, [model], [device_id])- Nimmt auf und übersetzt ins Englischewhisper_mic_level(duration_seconds, [device_id])- Mikrofonpegel prüfen
Sprache-zu-SQL-Funktionen
whisper_voice_to_sql([model], [device_id])- Nimmt Sprache auf und gibt erzeugtes SQL zurückwhisper_voice_query([model], [device_id])- Nimmt Sprache auf, erzeugt SQL und führt es auswhisper_voice_query_with_sql([model], [device_id])- Wie oben, mit SQL-Spalten
Modellverwaltungsfunktionen
whisper_list_models()- Listet alle verfügbaren Modelle und den Downloadstatuswhisper_download_model(model_name)- Gibt Download-Anweisungen zurück
Hilfsfunktionen
whisper_version()- Gibt Versionsinformationen zu Erweiterung und whisper.cpp zurückwhisper_check_audio(file_path)- Prüft, ob eine Audiodatei gelesen werden kannwhisper_audio_info(file_path)- Gibt Metadaten der Audiodatei zurückwhisper_get_config()- Gibt die aktuellen Whisper-Konfigurationseinstellungen zurück
Konfiguration
Einstellungen über übliche SET-Anweisungen:
-- Model settingsSET whisper_model = 'small.en';SET whisper_model_path = '/custom/path/models';SET whisper_language = 'en';SET whisper_threads = 4;
-- Recording settingsSET whisper_device_id = 0;SET whisper_max_duration = 30;SET whisper_silence_duration = 2;SET whisper_silence_threshold = 0.005;
-- Voice query settingsSET whisper_text_to_sql_url = 'http://localhost:8080/generate-sql';SET whisper_text_to_sql_timeout = 60;SET whisper_voice_query_show_sql = true;
-- View all whisper settingsSELECT * FROM duckdb_settings() WHERE name LIKE 'whisper_%';Die vollständige Dokumentation finden Sie im GitHub-Repository.
Hinzugefügte Funktionen
Diese Erweiterung fügt keine Funktionen hinzu.
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.