Des étapes supplémentaires sont nécessaires pour une installation optimisée par le GPU . Ces étapes sont recommandées pour ceux qui ont besoin de meilleures performances et ont un GPU NVIDIA compatible.
Remarque : Pour vérifier si votre GPU NVIDIA prend en charge CUDA, visitez la liste officielle des GPU CUDA.
Pour utiliser RealTimestt avec le support GPU via CUDA, veuillez suivre ces étapes:
Installez la boîte à outils Nvidia Cuda 11.8 :
Installez Nvidia Cudnn 8.7.0 pour CUDA 11.x :
Installer FFMPEG :
Vous pouvez télécharger un installateur pour votre système d'exploitation à partir du site Web FFMPEG.
Ou utilisez un gestionnaire de packages:
Sur Ubuntu ou Debian :
sudo apt update && sudo apt install ffmpegSur Arch Linux :
sudo pacman -S ffmpegSur macOS en utilisant Homebrew (https://brew.sh/):
brew install ffmpegSur les fenêtres en utilisant Chocolatey (https://chocolatey.org/):
choco install ffmpegSur Windows en utilisant Scoop (https://scoop.sh/):
scoop install ffmpegInstallez Pytorch avec le support CUDA :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
Win 如果装不上 webrtcvad , 提示了 vs c ++ 相关的报错 , 请下载 https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ , 安装 c ++ 开发相关工具 , 然后重新安装依赖。
启动后端python RealtimeSTT_server2.py
双击index.html , 浏览器运行 , 填入服务器 ip 地址 , 注意 , 关闭服务器的防火墙 , 或者针对性放行 9001/9002 这两个用于 WebSocket 连接的端口!
等待后端模型加载完毕后 , 就可以正常对话了。
2024-07-01
2024-06-03
2024-06-02
2024-05-28
Bibliothèque de parole à faible latence facile à utiliser pour les applications en temps réel
Realtimestt écoute le microphone et transcrit la voix en texte.
C'est idéal pour:
with )Astuce: Étant donné que nous utilisons le module
multiprocessingmaintenant, assurez-vous d'inclure leif __name__ == '__main__':protection dans votre code pour éviter un comportement inattendu, en particulier sur des plates-formes comme Windows. Pour une explication détaillée sur les raisons pour lesquelles cela est important, visitez la documentation officielle Python surmultiprocessing.
Astuce : consultez RealTimetts, le homologue de sortie de cette bibliothèque, pour les capacités de texte à voi. Ensemble, ils forment un puissant wrapper audio en temps réel autour de grands modèles de langue.
Cette bibliothèque utilise:
Ces composants représentent la «norme de l'industrie» pour les applications de pointe, fournissant les bases les plus modernes et les plus efficaces pour la construction de solutions haut de gamme.
pip install RealtimeSTTCela installera toutes les dépendances nécessaires, y compris une version de support CPU uniquement de Pytorch.
Bien qu'il soit possible d'exécuter RealTimestt avec une installation CPU uniquement (utilisez un petit modèle comme "Tiny" ou "Base" dans ce cas), vous obtiendrez une bonne expérience en utilisant:
Des étapes supplémentaires sont nécessaires pour une installation optimisée par le GPU . Ces étapes sont recommandées pour ceux qui ont besoin de meilleures performances et ont un GPU NVIDIA compatible.
Remarque : Pour vérifier si votre GPU NVIDIA prend en charge CUDA, visitez la liste officielle des GPU CUDA.
Pour utiliser RealTimestt avec le support GPU via CUDA, veuillez suivre ces étapes:
Installez la boîte à outils Nvidia Cuda 11.8 :
Installez Nvidia Cudnn 8.7.0 pour CUDA 11.x :
Installer FFMPEG :
Vous pouvez télécharger un installateur pour votre système d'exploitation à partir du site Web FFMPEG.
Ou utilisez un gestionnaire de packages:
Sur Ubuntu ou Debian :
sudo apt update && sudo apt install ffmpegSur Arch Linux :
sudo pacman -S ffmpegSur macOS en utilisant Homebrew (https://brew.sh/):
brew install ffmpegSur les fenêtres en utilisant Chocolatey (https://chocolatey.org/):
choco install ffmpegSur Windows en utilisant Scoop (https://scoop.sh/):
scoop install ffmpegInstallez Pytorch avec le support CUDA :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118Utilisation de base:
Le début et l'arrêt d'enregistrement sont déclenchés manuellement.
recorder . start ()
recorder . stop ()
print ( recorder . text ())Enregistrement basé sur la détection d'activité vocale.
with AudioToTextRecorder () as recorder :
print ( recorder . text ())Lors de l'exécution de l'enregistreur.
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )Activation du mot-clé avant de détecter la voix. Écrivez la liste séparée des virgules de vos mots clés d'activation souhaités dans le paramètre wake_words. Vous pouvez choisir Wake Words dans ces listes: 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 ())Vous pouvez définir des fonctions de rappel à exécuter sur différents événements (voir Configuration):
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 )Si vous ne souhaitez pas utiliser le paramètre de microphone local USE_Microphone par False et fournir des audiochunks PCM bruts dans mono 16 bits (samplerate 16000) avec cette méthode:
recorder . feed_audio ( audio_chunk )Vous pouvez arrêter l'enregistreur en toute sécurité en utilisant le protocole de gestion de contexte:
with AudioToTextRecorder () as recorder :
[...]Ou vous pouvez appeler manuellement la méthode d'arrêt (si l'utilisation "avec" n'est pas possible):
recorder . shutdown ()Le sous-répertoire de test contient un ensemble de scripts pour vous aider à évaluer et à comprendre les capacités de la bibliothèque RealTimetts.
Les scripts de test en fonction de la bibliothèque RealTimetts peuvent vous obliger à saisir votre région de service Azure dans le script. Lorsque vous utilisez des scripts de démonstration ouverts, Azure- ou ElevenLabs, les touches API doivent être fournies dans les variables d'environnement OpenAI_API_KEY, AZURE_SPEECH_KEY et ElevenLabs_API_KEY (voir RealTimetts)
Simple_test.py
Realtimestt_test.py
wakeword_test.py
traducteur.py
pip install openai realtimetts .openai_voice_interface.py
pip install openai realtimetts .Advanced_talk.py
pip install openai keyboard realtimetts .minimaliste_talkbot.py
pip install openai realtimetts .Le sous-répertoire Exemple_App contient une application d'interface utilisateur poli pour l'API OpenAI basée sur PYQT5.
AudioToTextRecorder Lorsque vous initialisez la classe AudioToTextRecorder , vous avez diverses options pour personnaliser son comportement.
modèle (str, default = "tiny"): taille du modèle ou chemin pour la transcription.
Langue (str, default = ""): code linguistique pour la transcription. S'il est laissé vide, le modèle essaiera de détecter automatiquement la langue. Les codes linguistiques pris en charge sont répertoriés dans la bibliothèque de tokenzer Whisper.
calcul_type (str, default = "Default"): spécifie le type de calcul à utiliser pour la transcription. Voir la quantification des chuchotements
input_device_index (int, default = 0): index du périphérique d'entrée audio à utiliser.
gpu_device_index (int, default = 0): index du périphérique GPU à utiliser. Le modèle peut également être chargé sur plusieurs GPU en passant une liste d'ID (par exemple [0, 1, 2, 3]).
on_recording_start : une fonction appelable déclenchée lorsque l'enregistrement démarre.
on_recording_stop : une fonction appelable déclenchée lorsque l'enregistrement se termine.
on_transcription_start : une fonction appelable déclenchée lorsque la transcription démarre.
assure_sence_starting_uppercase (bool, default = true): garantit que chaque phrase détectée par l'algorithme commence par une lettre majuscule.
assure_sence_ends_with_period (bool, default = true): garantit que chaque phrase qui ne se termine pas par la ponctuation telle que "?", "!" se termine par une période
use_microphone (bool, default = true): utilisation du microphone local pour la transcription. Réglé sur false si vous souhaitez fournir des morceaux avec la méthode feed_audio.
Spinner (bool, default = true): fournit un texte d'animation de spinner avec des informations sur l'état de l'enregistreur actuel.
Niveau (int, default = logging.warning): Niveau de journalisation.
Remarque : Lors de l'activation de la description en temps réel, une installation GPU est fortement conseillée. L'utilisation de la transcription en temps réel peut créer des charges GPU élevées.
activer_realtime_transcription (bool, default = false): Active ou désactive la transcription en temps réel de l'audio. Lorsqu'il est réglé sur true, l'audio sera transcrit en continu lors de l'enregistrement.
Realtime_Model_Type (str, default = "tiny"): spécifie la taille ou le chemin du modèle d'apprentissage automatique à utiliser pour une transcription en temps réel.
Realtime_processing_pause (float, par défaut = 0,2): spécifie l'intervalle de temps en quelques secondes après la transcription d'un morceau d'audio. Des valeurs plus faibles entraîneront des mises à jour de transcription plus "en temps réel" (fréquentes) mais peuvent augmenter la charge de calcul.
on_realtime_transcription_update : une fonction de rappel qui est déclenchée chaque fois qu'il y a une mise à jour dans la transcription en temps réel. La fonction est appelée avec le texte nouvellement transcrit comme argument.
on_realtime_transcription_stabilisé : une fonction de rappel qui est déclenchée chaque fois qu'il y a une mise à jour dans la transcription en temps réel et renvoie un texte stabilisé de meilleure qualité comme argument.
SILERO_SENSITION (Float, par défaut = 0,6): Sensibilité pour la détection d'activité vocale de Silero allant de 0 (moins sensible) à 1 (la plus sensible). La valeur par défaut est 0,6.
SILERO_SENSITION (Float, par défaut = 0,6): Sensibilité pour la détection d'activité vocale de Silero allant de 0 (moins sensible) à 1 (la plus sensible). La valeur par défaut est 0,6.
SILERO_USE_ONNX (BOOL, DEFAULT = FALSE): Permet l'utilisation du modèle pré-formé à partir de SILERE dans le format ONNX (Open Neural Network Exchange) au lieu du format Pytorch. La valeur par défaut est fausse. Recommandé pour des performances plus rapides.
post_speech_silence_duration (float, par défaut = 0,2): durée en secondes de silence qui doit suivre la parole avant que l'enregistrement ne soit considéré comme terminé. Cela garantit que toute brève pause pendant la parole ne met pas fin prématurément à l'enregistrement.
min_gap_between_recordings (float, default = 1.0): spécifie l'intervalle de temps minimum en secondes qui devraient exister entre la fin d'une session d'enregistrement et le début d'un autre pour éviter des enregistrements consécutifs rapides.
min_length_of_recording (float, default = 1.0): spécifie la durée minimale en secondes qu'une session d'enregistrement devrait durer pour assurer une capture audio significative, empêchant des enregistrements excessivement courts ou fragmentés.
pre_recording_buffer_duration (float, par défaut = 0,2): la durée, en secondes, pendant laquelle l'audio est tamponné avant l'enregistrement formel. Cela aide à contrebalancer la latence inhérente à la détection de l'activité de la parole, garantissant qu'aucun son initial n'est manqué.
on_vad_detect_start : une fonction appelable déclenchée lorsque le système commence à écouter l'activité vocale.
on_vad_detect_stop : une fonction appelable déclenchée lorsque le système s'arrête pour écouter l'activité vocale.
wake_words (str, default = ""): Wake Words pour lancer l'enregistrement. Plusieurs mots de réveil peuvent être fournis sous forme de chaîne séparée par des virgules. Les mots de sillage pris en charge sont: Alexa, Americano, Blueberry, Bumblebee, ordinateur, pamplemousse, Grasshopper, Hey Google, Hey Siri, Jarvis, OK Google, Picovoice, Porcupine, Terminator
wake_words_sensibilité (float, par défaut = 0,6): niveau de sensibilité pour la détection des mots de sillage (0 pour le moins sensible, 1 pour le plus sensible).
wake_word_activation_delay (float, default = 0): durée en secondes après le début de la surveillance avant que le système ne passe à l'activation du mot si aucune voix n'est initialement détectée. S'il est défini sur zéro, le système utilise immédiatement l'activation du mot de sillage.
wake_word_timeout (float, default = 5): durée en secondes après la reconnaissance d'un mot de réveil. Si aucune activité vocale ultérieure n'est détectée dans cette fenêtre, le système revient à un état inactif, en attendant le mot de réveil suivant ou l'activation vocale.
on_wakeword_detected : une fonction appelable déclenchée lorsqu'un mot de réveil est détecté.
on_wakeword_timeout : une fonction appelable a déclenché lorsque le système remonte à un état inactif après quand aucune discours n'a été détectée après l'activation du mot de sillage.
on_wakeword_detection_start : une fonction appelable déclenchée lorsque le système commence à écouter les mots de sillage
on_wakeword_detection_end : une fonction appelable déclenchée lors de l'arrêt pour écouter les mots de sillage (par exemple en raison du délai d'attente ou du mot de sillage détecté)
Les contributions sont toujours les bienvenues!
Mit
Kolja Beigel
Courriel: [email protected]
Github