Benutzerfreundliche Sprach-zu-Text-Bibliothek mit geringer Latenz für Echtzeitanwendungen
RealtimeSTT hört auf das Mikrofon und wandelt Stimme in Text um.
Hinweis: Schauen Sie sich Linguflex an , das ursprüngliche Projekt, aus dem RealtimeSTT hervorgegangen ist. Es ermöglicht Ihnen die Steuerung Ihrer Umgebung durch Sprechen und ist einer der leistungsfähigsten und fortschrittlichsten Open-Source-Assistenten, die derzeit verfügbar sind.
Es ist ideal für:
Neueste Version: v0.3.7
Siehe Veröffentlichungsverlauf.
Hinweis: Da wir jetzt das
multiprocessing
Modul verwenden, stellen Sie sicher, dass Sie denif __name__ == '__main__':
Schutz in Ihren Code einschließen, um unerwartetes Verhalten zu verhindern, insbesondere auf Plattformen wie Windows. Eine ausführliche Erklärung, warum dies wichtig ist, finden Sie in der offiziellen Python-Dokumentation zumultiprocessing
.
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
import pyautogui
def process_text ( text ):
pyautogui . typewrite ( text + " " )
if __name__ == '__main__' :
print ( "Wait until it says 'speak now'" )
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
Gibt alles, was gesagt wird, in das von Ihnen ausgewählte Textfeld ein
Hinweis : Schauen Sie sich RealtimeTTS an, das Ausgabe-Pendant dieser Bibliothek, für Text-to-Voice-Funktionen. Zusammen bilden sie einen leistungsstarken Echtzeit-Audio-Wrapper für große Sprachmodelle.
Diese Bibliothek verwendet:
Diese Komponenten stellen den „Industriestandard“ für Spitzenanwendungen dar und bieten die modernste und effektivste Grundlage für den Aufbau von High-End-Lösungen.
pip install RealtimeSTT
Dadurch werden alle erforderlichen Abhängigkeiten installiert, einschließlich einer Version von PyTorch, die nur die CPU unterstützt .
Obwohl es möglich ist, RealtimeSTT nur mit einer CPU-Installation auszuführen (verwenden Sie in diesem Fall ein kleines Modell wie „tiny“ oder „base“), werden Sie viel bessere Erfahrungen machen, wenn Sie Folgendes verwenden:
Um Ihre PyTorch-Installation zu aktualisieren, um GPU-Unterstützung mit CUDA zu aktivieren, befolgen Sie diese Anweisungen basierend auf Ihrer spezifischen CUDA-Version. Dies ist nützlich, wenn Sie die Leistung von RealtimeSTT mit CUDA-Funktionen verbessern möchten.
Um PyTorch und Torchaudio zur Unterstützung von CUDA 11.8 zu aktualisieren, verwenden Sie die folgenden Befehle:
pip install torch==2.3.1+cu118 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu118
Um PyTorch und Torchaudio zur Unterstützung von CUDA 12.X zu aktualisieren, führen Sie Folgendes aus:
pip install torch==2.3.1+cu121 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
Ersetzen Sie 2.3.1
durch die Version von PyTorch, die Ihrem System und Ihren Anforderungen entspricht.
Hinweis : Um zu überprüfen, ob Ihre NVIDIA-GPU CUDA unterstützt, besuchen Sie die offizielle CUDA-GPU-Liste.
Wenn Sie zuvor noch keine CUDA-Modelle verwendet haben, sind vor der Installation möglicherweise einmalig einige zusätzliche Schritte erforderlich. Diese Schritte bereiten das System auf die CUDA-Unterstützung und die Installation der GPU-optimierten Installation vor. Dies wird für diejenigen empfohlen, die eine bessere Leistung benötigen und über eine kompatible NVIDIA-GPU verfügen. Um RealtimeSTT mit GPU-Unterstützung über CUDA zu verwenden, befolgen Sie bitte auch diese Schritte:
Installieren Sie das NVIDIA CUDA Toolkit :
Installieren Sie NVIDIA cuDNN :
ffmpeg installieren :
Hinweis : Die Installation von ffmpeg ist möglicherweise nicht unbedingt erforderlich, um RealtimeSTT zu betreiben. *Danke an jgilbert2017 für den Hinweis
Sie können ein Installationsprogramm für Ihr Betriebssystem von der ffmpeg-Website herunterladen.
Oder verwenden Sie einen Paketmanager:
Auf Ubuntu oder Debian :
sudo apt update && sudo apt install ffmpeg
Unter Arch Linux :
sudo pacman -S ffmpeg
Auf MacOS mit Homebrew (https://brew.sh/):
brew install ffmpeg
Unter Windows mit der offiziellen Winget -Dokumentation:
winget install Gyan.FFmpeg
Unter Windows mit Chocolatey (https://chocolatey.org/):
choco install ffmpeg
Unter Windows mit Scoop (https://scoop.sh/):
scoop install ffmpeg
Grundlegende Verwendung:
Start und Stopp der Aufzeichnung werden manuell ausgelöst.
recorder . start ()
recorder . stop ()
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
recorder . start ()
input ( "Press Enter to stop recording..." )
recorder . stop ()
print ( "Transcription: " , recorder . text ())
Aufzeichnung basierend auf Sprachaktivitätserkennung.
with AudioToTextRecorder () as recorder :
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
print ( "Transcription: " , recorder . text ())
Wenn Sie recorder.text in einer Schleife ausführen, wird empfohlen, einen Rückruf zu verwenden, damit die Transkription asynchron ausgeführt werden kann:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )
from RealtimeSTT import AudioToTextRecorder
def process_text ( text ):
print ( text )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ()
while True :
recorder . text ( process_text )
Schlüsselwortaktivierung vor der Spracherkennung. Schreiben Sie die durch Kommas getrennte Liste Ihrer gewünschten Aktivierungsschlüsselwörter in den Parameter wake_words. Sie können Weckwörter aus dieser Liste auswählen: Alexa, Americano, Blueberry, Bumblebee, Computer, Grapefruits, Grasshopper, Hey Google, Hey Siri, Jarvis, Ok Google, Picovoice, Porcupine, Terminator.
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
print ( recorder . text ())
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" to start recording.' )
print ( recorder . text ())
Sie können Callback-Funktionen so einstellen, dass sie bei verschiedenen Ereignissen ausgeführt werden (siehe Konfiguration):
def my_start_callback ():
print ( "Recording started!" )
def my_stop_callback ():
print ( "Recording stopped!" )
recorder = AudioToTextRecorder ( on_recording_start = my_start_callback ,
on_recording_stop = my_stop_callback )
from RealtimeSTT import AudioToTextRecorder
def start_callback ():
print ( "Recording started!" )
def stop_callback ():
print ( "Recording stopped!" )
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( on_recording_start = start_callback ,
on_recording_stop = stop_callback )
Wenn Sie das lokale Mikrofon nicht verwenden möchten, setzen Sie den Parameter „use_microphone“ auf „false“ und stellen Sie mit dieser Methode rohe PCM-Audioblöcke in 16-Bit-Mono (Samplerate 16000) bereit:
recorder . feed_audio ( audio_chunk )
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
recorder = AudioToTextRecorder ( use_microphone = False )
with open ( "audio_chunk.pcm" , "rb" ) as f :
audio_chunk = f . read ()
recorder . feed_audio ( audio_chunk )
print ( "Transcription: " , recorder . text ())
Sie können den Rekorder sicher herunterfahren, indem Sie das Kontextmanagerprotokoll verwenden:
with AudioToTextRecorder () as recorder :
[...]
Oder Sie können die Shutdown-Methode manuell aufrufen (falls die Verwendung von „with“ nicht möglich ist):
recorder . shutdown ()
from RealtimeSTT import AudioToTextRecorder
if __name__ == '__main__' :
with AudioToTextRecorder () as recorder :
[...]
# or manually shutdown if "with" is not used
recorder . shutdown ()
Das Test-Unterverzeichnis enthält eine Reihe von Skripten, die Ihnen helfen, die Funktionen der RealtimeTTS-Bibliothek zu bewerten und zu verstehen.
Für Testskripts, die von der RealtimeTTS-Bibliothek abhängig sind, müssen Sie möglicherweise Ihre Azure-Serviceregion im Skript eingeben. Bei Verwendung von OpenAI-, Azure- oder Elevenlabs-bezogenen Demoskripten sollten die API-Schlüssel in den Umgebungsvariablen OPENAI_API_KEY, AZURE_SPEECH_KEY und ELEVENLABS_API_KEY bereitgestellt werden (siehe RealtimeTTS).
simple_test.py
realtimestt_test.py
wakeword_test.py
translator.py
pip install openai realtimetts
aus.openai_voice_interface.py
pip install openai realtimetts
aus.advanced_talk.py
pip install openai keyboard realtimetts
aus.minimalistic_talkbot.py
pip install openai realtimetts
aus.Das Unterverzeichnis example_app enthält eine ausgefeilte Benutzeroberflächenanwendung für die OpenAI-API basierend auf PyQt5.
AudioToTextRecorder
Wenn Sie die AudioToTextRecorder
-Klasse initialisieren, haben Sie verschiedene Möglichkeiten, ihr Verhalten anzupassen.
model (str, default="tiny"): Modellgröße oder Pfad für die Transkription.
language (str, default=""): Sprachcode für die Transkription. Wenn es leer bleibt, versucht das Modell, die Sprache automatisch zu erkennen. Unterstützte Sprachcodes sind in der Whisper Tokenizer-Bibliothek aufgeführt.
compute_type (str, default="default"): Gibt den Berechnungstyp an, der für die Transkription verwendet werden soll. Siehe Flüsterquantisierung
input_device_index (int, default=0): Zu verwendender Audio-Eingabegeräteindex.
gpu_device_index (int, default=0): Zu verwendender GPU-Geräteindex. Das Modell kann auch auf mehrere GPUs geladen werden, indem eine Liste von IDs (z. B. [0, 1, 2, 3]) übergeben wird.
device (str, default="cuda"): Gerät, das vom Modell verwendet werden soll. Kann entweder „cuda“ oder „cpu“ sein.
on_recording_start : Eine aufrufbare Funktion, die beim Start der Aufnahme ausgelöst wird.
on_recording_stop : Eine aufrufbare Funktion, die ausgelöst wird, wenn die Aufzeichnung endet.
on_transcription_start : Eine aufrufbare Funktion, die ausgelöst wird, wenn die Transkription beginnt.
secure_sentence_starting_uppercase (bool, default=True): Stellt sicher, dass jeder vom Algorithmus erkannte Satz mit einem Großbuchstaben beginnt.
secure_sentence_ends_with_period (bool, default=True): Stellt sicher, dass jeder Satz, der nicht mit Satzzeichen wie „?“, „!“ endet. endet mit einem Punkt
use_microphone (bool, default=True): Verwendung des lokalen Mikrofons für die Transkription. Legen Sie „False“ fest, wenn Sie Chunks mit der Methode „feed_audio“ bereitstellen möchten.
spinner (bool, default=True): Stellt einen Spinner-Animationstext mit Informationen zum aktuellen Rekorderstatus bereit.
level (int, default=logging.WARNING): Protokollierungsstufe.
handle_buffer_overflow (bool, default=True): Wenn festgelegt, protokolliert das System eine Warnung, wenn während der Aufzeichnung ein Eingabeüberlauf auftritt, und entfernt die Daten aus dem Puffer.
beam_size (int, default=5): Die Strahlgröße, die für die Dekodierung der Strahlsuche verwendet werden soll.
initial_prompt (str oder iterable of int, default=None): Erste Eingabeaufforderung, die den Transkriptionsmodellen zugeführt wird.
supprim_tokens (list of int, default=[-1]): Token, die aus der Transkriptionsausgabe unterdrückt werden sollen.
on_recorded_chunk : Eine Rückruffunktion, die ausgelöst wird, wenn ein Audioblock aufgezeichnet wird. Übermittelt die Blockdaten als Parameter.
debug_mode (bool, default=False): Wenn festgelegt, gibt das System zusätzliche Debug-Informationen an die Konsole aus.
print_transcription_time (bool, default=False): Protokolliert die Verarbeitungszeit der Hauptmodelltranskription. Dies kann für die Leistungsüberwachung und das Debuggen nützlich sein.
Early_transcription_on_silence (int, default=0): Wenn festgelegt, transkribiert das System Audio schneller, wenn Stille erkannt wird. Die Transkription beginnt nach den angegebenen Millisekunden. Halten Sie diesen Wert niedriger als post_speech_silence_duration
, idealerweise etwa post_speech_silence_duration
abzüglich der geschätzten Transkriptionszeit mit dem Hauptmodell. Wenn die Stille länger als post_speech_silence_duration
dauert, wird die Aufzeichnung gestoppt und die Transkription gesendet. Wenn die Sprachaktivität innerhalb dieses Zeitraums wieder aufgenommen wird, wird die Transkription verworfen. Dies führt zu schnelleren endgültigen Transkriptionen auf Kosten einer zusätzlichen GPU-Auslastung aufgrund einiger unnötiger endgültiger Transkriptionen.
Allowed_latency_limit (int, default=100): Gibt die maximale Anzahl unverarbeiteter Blöcke in der Warteschlange an, bevor Blöcke verworfen werden. Dadurch wird verhindert, dass das System überlastet wird und die Reaktionsfähigkeit bei Echtzeitanwendungen verloren geht.
no_log_file (bool, default=False): Wenn festgelegt, überspringt das System das Schreiben der Debug-Protokolldatei und reduziert so die Festplatten-E/A. Nützlich, wenn die Protokollierung in einer Datei nicht erforderlich ist und die Leistung Priorität hat.
Hinweis : Bei der Aktivierung der Echtzeitbeschreibung wird dringend eine GPU-Installation empfohlen. Die Verwendung der Echtzeittranskription kann zu einer hohen GPU-Last führen.
enable_realtime_transcription (bool, default=False): Aktiviert oder deaktiviert die Echtzeittranskription von Audio. Bei der Einstellung „True“ wird das Audio während der Aufnahme kontinuierlich transkribiert.
use_main_model_for_realtime (bool, default=False): Wenn auf True gesetzt, wird das Haupttranskriptionsmodell sowohl für die reguläre Transkription als auch für die Echtzeittranskription verwendet. Bei False wird ein separates, durch realtime_model_type
angegebenes Modell für die Echtzeittranskription verwendet. Die Verwendung eines einzelnen Modells kann Speicher sparen und möglicherweise die Leistung verbessern, ist jedoch möglicherweise nicht für die Echtzeitverarbeitung optimiert. Die Verwendung separater Modelle ermöglicht ein kleineres, schnelleres Modell für die Echtzeit-Transkription und gleichzeitig ein genaueres Modell für die endgültige Transkription.
realtime_model_type (str, default="tiny"): Gibt die Größe oder den Pfad des maschinellen Lernmodells an, das für die Echtzeittranskription verwendet werden soll.
realtime_processing_pause (float, Standard=0,2): Gibt das Zeitintervall in Sekunden an, nachdem ein Audioteil transkribiert wurde. Niedrigere Werte führen zu häufigeren Transkriptionsaktualisierungen in „Echtzeit“, können jedoch die Rechenlast erhöhen.
on_realtime_transcription_update : Eine Rückruffunktion, die immer dann ausgelöst wird, wenn es eine Aktualisierung in der Echtzeittranskription gibt. Die Funktion wird mit dem neu transkribierten Text als Argument aufgerufen.
on_realtime_transcription_stabilized : Eine Rückruffunktion, die immer dann ausgelöst wird, wenn es eine Aktualisierung in der Echtzeittranskription gibt, und als Argument einen stabilisierten Text höherer Qualität zurückgibt.
beam_size_realtime (int, default=3): Die Strahlgröße, die für die Echtzeit-Transkriptions-Beam-Suchdekodierung verwendet werden soll.
silero_sensitivity (float, Standard=0,6): Empfindlichkeit für Sileros Sprachaktivitätserkennung im Bereich von 0 (am wenigsten empfindlich) bis 1 (am empfindlichsten). Der Standardwert ist 0,6.
silero_use_onnx (bool, default=False): Ermöglicht die Verwendung des vorab trainierten Modells von Silero im ONNX-Format (Open Neural Network Exchange) anstelle des PyTorch-Formats. Der Standardwert ist False. Empfohlen für schnellere Leistung.
silero_deactivity_detection (bool, default=False): Aktiviert das Silero-Modell für die End-of-Speech-Erkennung. Robuster gegen Hintergrundgeräusche. Nutzt zusätzliche GPU-Ressourcen, verbessert jedoch die Genauigkeit in lauten Umgebungen. Bei „Falsch“ wird das Standard-WebRTC-VAD verwendet, das empfindlicher ist, aber aufgrund von Hintergrundgeräuschen möglicherweise länger aufzeichnet.
webrtc_sensitivity (int, default=3): Empfindlichkeit für die WebRTC-Engine zur Sprachaktivitätserkennung im Bereich von 0 (am wenigsten aggressiv/am empfindlichsten) bis 3 (am aggressivsten, am wenigsten empfindlich). Der Standardwert ist 3.
post_speech_silence_duration (float, Standard=0,2): Dauer in Sekunden der Stille, die auf die Rede folgen muss, bevor die Aufnahme als abgeschlossen gilt. Dadurch wird sichergestellt, dass kurze Sprechpausen die Aufnahme nicht vorzeitig beenden.
min_gap_between_recordings (float, Standard=1.0): Gibt das minimale Zeitintervall in Sekunden an, das zwischen dem Ende einer Aufnahmesitzung und dem Beginn einer anderen liegen sollte, um schnell aufeinanderfolgende Aufnahmen zu verhindern.
min_length_of_recording (float, Standard=1,0): Gibt die Mindestdauer in Sekunden an, die eine Aufnahmesitzung dauern sollte, um eine sinnvolle Audioaufnahme zu gewährleisten und übermäßig kurze oder fragmentierte Aufnahmen zu verhindern.
pre_recording_buffer_duration (float, Standard=0,2): Die Zeitspanne in Sekunden, während der Audio vor der offiziellen Aufnahme gepuffert wird. Dies trägt dazu bei, die mit der Sprachaktivitätserkennung verbundene Latenz auszugleichen und sicherzustellen, dass kein anfänglicher Ton übersehen wird.
on_vad_detect_start : Eine aufrufbare Funktion, die ausgelöst wird, wenn das System beginnt, auf Sprachaktivität zu warten.
on_vad_detect_stop : Eine aufrufbare Funktion, die ausgelöst wird, wenn das System anhält, um auf Sprachaktivität zu warten.
wakeword_backend (str, default="pvporcupine"): Gibt die Backend-Bibliothek an, die für die Aktivierungsworterkennung verwendet werden soll. Zu den unterstützten Optionen gehören „pvporcupine“ für die Verwendung der Porcupine Wake-Word-Engine oder „oww“ für die Verwendung der OpenWakeWord-Engine.
openwakeword_model_paths (str, default=None): Durch Kommas getrennte Pfade zu Modelldateien für die Openwakeword-Bibliothek. Diese Pfade verweisen auf benutzerdefinierte Modelle, die für die Wakeword-Erkennung verwendet werden können, wenn die openwakeword-Bibliothek als wakeword_backend ausgewählt wird.
openwakeword_inference_framework (str, default="onnx"): Gibt das Inferenzframework an, das mit der openwakeword-Bibliothek verwendet werden soll. Kann entweder „onnx“ für das Open Neural Network Exchange-Format oder „tflite“ für TensorFlow Lite sein.
wake_words (str, default=""): Aufzeichnung starten, wenn das Wakeword-Backend „pvporcupine“ verwendet wird. Mehrere Aktivierungswörter können als durch Kommas getrennte Zeichenfolge bereitgestellt werden. Unterstützte Aktivierungswörter sind: Alexa, Americano, Blueberry, Bumblebee, Computer, Grapefruits, Grasshopper, Hey Google, Hey Siri, Jarvis, Ok Google, Picovoice, Porcupine, Terminator. Für das Backend „openwakeword“ werden Aktivierungswörter automatisch aus den bereitgestellten Modelldateien extrahiert, sodass eine Angabe hier nicht erforderlich ist.
wake_words_sensitivity (float, Standard=0,6): Empfindlichkeitsstufe für die Wake-Word-Erkennung (0 für am wenigsten empfindlich, 1 für am empfindlichsten).
wake_word_activation_delay (float, Standard=0): Dauer in Sekunden nach Beginn der Überwachung, bevor das System auf Wake-Word-Aktivierung umschaltet, wenn zunächst keine Stimme erkannt wird. Wenn der Wert auf Null gesetzt ist, verwendet das System sofort die Aktivierung des Aktivierungsworts.
wake_word_timeout (float, Standard=5): Dauer in Sekunden, nachdem ein Aktivierungswort erkannt wurde. Wenn innerhalb dieses Fensters keine weitere Sprachaktivität erkannt wird, geht das System zurück in einen inaktiven Zustand und wartet auf das nächste Weckwort oder die nächste Sprachaktivierung.
wake_word_buffer_duration (float, Standard=0,1): Dauer in Sekunden zum Puffern von Audiodaten während der Aktivierungsworterkennung. Dadurch wird das Aktivierungswort aus dem Aufnahmepuffer herausgeschnitten, sodass es nicht fälschlicherweise zusammen mit dem folgenden gesprochenen Text erkannt wird, wodurch sauberere und genauere Transkriptionsstartauslöser gewährleistet werden. Erhöhen Sie diesen Wert, wenn Teile des Aktivierungsworts als Text erkannt werden.
on_wakeword_detected : Eine aufrufbare Funktion, die ausgelöst wird, wenn ein Aktivierungswort erkannt wird.
on_wakeword_timeout : Eine aufrufbare Funktion, die ausgelöst wird, wenn das System in einen inaktiven Zustand zurückkehrt, nachdem nach der Aktivierung des Aktivierungsworts keine Sprache erkannt wurde.
on_wakeword_detection_start : Eine aufrufbare Funktion, die ausgelöst wird, wenn das System beginnt, auf Aktivierungswörter zu warten
on_wakeword_detection_end : Eine aufrufbare Funktion, die beim Anhalten ausgelöst wird, um auf Aktivierungswörter zu warten (z. B. aufgrund einer Zeitüberschreitung oder eines erkannten Aktivierungsworts).
Hier finden Sie Informationen zum Trainieren Ihrer eigenen OpenWakeWord-Modelle. Sie können zunächst ein einfaches Google Colab-Notizbuch verwenden oder ein detaillierteres Notizbuch verwenden, das eine stärkere Anpassung ermöglicht (kann qualitativ hochwertige Modelle erstellen, erfordert jedoch mehr Entwicklungserfahrung).
Möglicherweise müssen Sie tf2onnx verwenden, um Tensorflow-TFlite-Modelle in das ONNX-Format zu konvertieren:
pip install -U tf2onnx
python -m tf2onnx.convert --tflite my_model_filename.tflite --output my_model_filename.onnx
Empfohlene Startparameter für die Verwendung von OpenWakeWord:
with AudioToTextRecorder (
wakeword_backend = "oww" ,
wake_words_sensitivity = 0.35 ,
openwakeword_model_paths = "word1.onnx,word2.onnx" ,
wake_word_buffer_duration = 1 ,
) as recorder :
A: Dieses Problem entsteht durch eine Nichtübereinstimmung zwischen der Version von ctranslate2
und cuDNN. Die ctranslate2
Bibliothek wurde auf Version 4.5.0 aktualisiert, die cuDNN 9.2 verwendet. Es gibt zwei Möglichkeiten, dieses Problem zu beheben:
ctranslate2
auf Version 4.4.0 herunterstufen : pip install ctranslate2==4.4.0
Beiträge sind jederzeit willkommen!
Vielen Dank an Steven Linn für die Bereitstellung von Docker-Unterstützung.
MIT
Kolja Beigel
E-Mail: [email protected]
GitHub