Se necesitan pasos adicionales para una instalación optimizada por GPU . Estos pasos se recomiendan para aquellos que requieren un mejor rendimiento y tienen una GPU NVIDIA compatible.
Nota : Para verificar si su GPU NVIDIA admite CUDA, visite la lista oficial de GPU CUDA.
Para usar RealTimestt con soporte de GPU a través de CUDA, siga estos pasos:
Instale el kit de herramientas NVIDIA CUDA 11.8 :
Instale Nvidia Cudnn 8.7.0 para CUDA 11.x :
Instalar ffmpeg :
Puede descargar un instalador para su sistema operativo desde el sitio web de FFMPEG.
O use un administrador de paquetes:
En Ubuntu o Debian :
sudo apt update && sudo apt install ffmpegEn Arch Linux :
sudo pacman -S ffmpegEn macOS usando HomeBrew (https://brew.sh/):
brew install ffmpegEn ventanas con chocolate (https://chocolatey.org/):
choco install ffmpegEn Windows usando Scoop (https://scoop.sh/):
scoop install ffmpegInstale Pytorch con soporte 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
Biblioteca de voz a texto fácil de usar y de baja latencia para aplicaciones en tiempo real
RealTimestt escucha el micrófono y transcribe la voz al texto.
Es ideal para:
with )Sugerencia: dado que usamos el módulo
multiprocessingahora, asegúrese de incluirif __name__ == '__main__':protección en su código para evitar un comportamiento inesperado, especialmente en plataformas como Windows. Para una explicación detallada de por qué esto es importante, visite la documentación oficial de Python sobremultiprocessing.
Sugerencia : consulte RealTimetts, la contraparte de salida de esta biblioteca, para capacidades de texto a voz. Juntos, forman un poderoso contenedor de audio en tiempo real en torno a modelos de idiomas grandes.
Esta biblioteca usa:
Estos componentes representan el "estándar de la industria" para las aplicaciones de vanguardia, proporcionando la base más moderna y efectiva para construir soluciones de alta gama.
pip install RealtimeSTTEsto instalará todas las dependencias necesarias, incluida una versión solo de soporte de CPU de Pytorch.
Aunque es posible ejecutar RealTimestt con una instalación de CPU solamente (use un modelo pequeño como "Tiny" o "Base" en este caso), obtendrá una mejor experiencia usando:
Se necesitan pasos adicionales para una instalación optimizada por GPU . Estos pasos se recomiendan para aquellos que requieren un mejor rendimiento y tienen una GPU NVIDIA compatible.
Nota : Para verificar si su GPU NVIDIA admite CUDA, visite la lista oficial de GPU CUDA.
Para usar RealTimestt con soporte de GPU a través de CUDA, siga estos pasos:
Instale el kit de herramientas NVIDIA CUDA 11.8 :
Instale Nvidia Cudnn 8.7.0 para CUDA 11.x :
Instalar ffmpeg :
Puede descargar un instalador para su sistema operativo desde el sitio web de FFMPEG.
O use un administrador de paquetes:
En Ubuntu o Debian :
sudo apt update && sudo apt install ffmpegEn Arch Linux :
sudo pacman -S ffmpegEn macOS usando HomeBrew (https://brew.sh/):
brew install ffmpegEn ventanas con chocolate (https://chocolatey.org/):
choco install ffmpegEn Windows usando Scoop (https://scoop.sh/):
scoop install ffmpegInstale Pytorch con soporte CUDA :
pip uninstall torch
pip install torch==2.0.1+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118Uso básico:
El inicio y la parada de la grabación se activan manualmente.
recorder . start ()
recorder . stop ()
print ( recorder . text ())Grabación basada en la detección de actividad de voz.
with AudioToTextRecorder () as recorder :
print ( recorder . text ())Al ejecutar grabador.text en un bucle, se recomienda usar una devolución de llamada, lo que permite que la transcripción se ejecute de forma asincrónica:
def process_text ( text ):
print ( text )
while True :
recorder . text ( process_text )Activación de palabras clave antes de detectar la voz. Escriba la lista separada por comas de sus palabras clave de activación deseadas en el parámetro Wake_Words. Puede elegir palabras de Wake de esta lista: Alexa, Americano, Blueberry, Bumblebee, Computer, Grapefruits, Grasshopper, Hey Google, Hey Siri, Jarvis, Ok Google, Picovoice, puercoespín, Terminator.
recorder = AudioToTextRecorder ( wake_words = "jarvis" )
print ( 'Say "Jarvis" then speak.' )
print ( recorder . text ())Puede establecer funciones de devolución de llamada para ejecutarse en diferentes eventos (ver configuración):
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 no desea utilizar el parámetro USE_Microphone de micrófono local en FALSO y proporciona audiochunks de PCM sin procesar en Mono de 16 bits (Samplate 16000) con este método:
recorder . feed_audio ( audio_chunk )Puede cerrar la grabadora de forma segura utilizando el Protocolo del Administrador de contexto:
with AudioToTextRecorder () as recorder :
[...]O puede llamar al método de cierre manualmente (si usar "con" no es factible):
recorder . shutdown ()El subdirectorio de prueba contiene un conjunto de scripts para ayudarlo a evaluar y comprender las capacidades de la Biblioteca RealTimetts.
Los scripts de prueba dependiendo de la biblioteca RealTimetts pueden requerir que ingrese su región de servicio de Azure dentro del script. Al usar scripts de demostración relacionados con OpenAI, Azure o ElevenLabs, las teclas API deben proporcionarse en las variables de entorno OpenAI_API_KEY, AZURE_SPECH_KEY y ELEVENLABS_API_KEY (ver RealTimetts)
simple_test.py
RealTimestt_test.py
wakeword_test.py
traductor.py
pip install openai realtimetts .OPERAI_VOICE_INTERFACE.PY
pip install openai realtimetts .avanzado_talk.py
pip install openai keyboard realtimetts .minimalista_talkbot.py
pip install openai realtimetts .El subdirectorio Ejemplo_App contiene una aplicación de interfaz de usuario pulida para la API de OpenAI basada en PYQT5.
AudioToTextRecorder Cuando inicializa la clase AudioToTextRecorder , tiene varias opciones para personalizar su comportamiento.
modelo (str, default = "tiny"): tamaño del modelo o ruta para la transcripción.
lenguaje (str, default = ""): código de idioma para la transcripción. Si se deja vacío, el modelo intentará detectar automáticamente el idioma. Los códigos de lenguaje compatibles se enumeran en la biblioteca de tokenizador Whisper.
Compute_type (str, default = "default"): especifica el tipo de cálculo que se utilizará para la transcripción. Ver cuantificación de susurros
input_device_index (int, default = 0): Índice de dispositivo de entrada de audio para usar.
gpu_device_index (int, default = 0): índice de dispositivo GPU para usar. El modelo también se puede cargar en múltiples GPU pasando una lista de ID (por ejemplo, [0, 1, 2, 3]).
on_recording_start : una función invocable activada cuando se inicia la grabación.
on_recording_stop : una función invocable activada al finalizar la grabación.
on_transcription_start : una función llamable activada cuando se inicia la transcripción.
ASARRECE_SENTENCE_STARTING_UPPERCASE (BOOL, default = true): asegura que cada oración detectada por el algoritmo comience con una letra mayúscula.
Asegro_sentence_ends_with_period (bool, default = true): asegura que cada oración que no termine con puntuación como "?", "!" termina con un período
USE_MICROPHONE (bool, default = true): uso del micrófono local para la transcripción. Establezca en falso si desea proporcionar trozos con el método Feed_audio.
spinner (bool, default = true): proporciona un texto de animación de spinner con información sobre el estado de grabadora actual.
nivel (int, default = logging.warning): nivel de registro.
Nota : Al habilitar la descripción en tiempo real, se recomienda una instalación de GPU. El uso de la transcripción en tiempo real puede crear altas cargas de GPU.
enable_realtime_transcription (bool, default = false): habilita o deshabilita la transcripción en tiempo real de audio. Cuando se establece en True, el audio se transcribirá continuamente a medida que se está grabando.
RealTime_Model_Type (str, default = "Tiny"): especifica el tamaño o ruta del modelo de aprendizaje automático que se utilizará para la transcripción en tiempo real.
RealTime_Processing_Pause (float, default = 0.2): especifica el intervalo de tiempo en segundos después de que se transcribe una parte de audio. Los valores más bajos darán como resultado actualizaciones de transcripción más "en tiempo real" (frecuentes), pero pueden aumentar la carga computacional.
on_realtime_transcription_update : una función de devolución de llamada que se activa cada vez que hay una actualización en la transcripción en tiempo real. La función se llama con el texto recién transcrito como su argumento.
on_realtime_transcription_stabilized : una función de devolución de llamada que se activa cada vez que hay una actualización en la transcripción en tiempo real y devuelve un texto estabilizado de mayor calidad como argumento.
Silero_Sensitivity (Float, default = 0.6): sensibilidad para la detección de actividad de voz de Silero que varía de 0 (menos sensible) a 1 (más sensible). El valor predeterminado es 0.6.
Silero_Sensitivity (Float, default = 0.6): sensibilidad para la detección de actividad de voz de Silero que varía de 0 (menos sensible) a 1 (más sensible). El valor predeterminado es 0.6.
Silero_use_onnx (bool, default = false): habilita el uso del modelo previamente capacitado de Silero en el formato ONNX (Intercambio de red neuronal abierto) en lugar del formato Pytorch. El valor predeterminado es falso. Recomendado para un rendimiento más rápido.
post_speech_silence_duration (float, default = 0.2): duración en segundos de silencio que debe seguir el discurso antes de que se considere que la grabación se complete. Esto asegura que cualquier breve pausa durante el discurso no termine prematuramente la grabación.
min_gap_between_recordings (Float, default = 1.0): Especifica el intervalo de tiempo mínimo en segundos que deberían existir entre el final de una sesión de grabación y el comienzo de otro para evitar registros consecutivos rápidos.
min_length_of_recording (Float, default = 1.0): especifica la duración mínima en segundos que una sesión de grabación debe durar para garantizar una captura de audio significativa, evitando grabaciones excesivamente cortas o fragmentadas.
pre_recording_buffer_duration (float, default = 0.2): el lapso de tiempo, en segundos, durante el cual el audio se almacena antes de la grabación formal. Esto ayuda a contrarrestar la latencia inherente a la detección de la actividad del habla, asegurando que no se pierda el audio inicial.
ON_VAD_DETECT_START : una función invocable activada cuando el sistema comienza a escuchar la actividad de voz.
ON_VAD_DETECT_STOP : una función invocable activada cuando el sistema se detiene para escuchar la actividad de voz.
wake_words (str, default = ""): Wake Words para iniciar la grabación. Se pueden proporcionar varias palabras de estela como una cadena separada por comas. Las palabras de estela compatibles son: Alexa, Americano, Blueberry, Bumblebee, Computer, Grapefruits, Grasshopper, Hey Google, Hey Siri, Jarvis, Ok Google, Picovoice, puercoespín, Terminator
wake_words_sensitivity (float, default = 0.6): nivel de sensibilidad para la detección de palabras de wake (0 para menos sensible, 1 para la más sensible).
wake_word_activation_delay (float, default = 0): duración en segundos después del inicio del monitoreo antes de que el sistema cambie a la activación de Wake Word si no se detecta inicialmente la voz. Si se establece en cero, el sistema usa la activación de la palabra de vigilia inmediatamente.
wake_word_timeout (float, default = 5): duración en segundos después de que se reconoce una palabra de wake. Si no se detecta una actividad de voz posterior dentro de esta ventana, el sistema pasa a un estado inactivo, esperando la próxima palabra de vigilia o activación de voz.
on_wakeword_detected : una función invocable activada cuando se detecta una palabra de vigilia.
on_wakeword_timeout : una función invocable activada cuando el sistema vuelve a un estado inactivo después de que no se detectó ningún discurso después de la activación de la palabra de vigilia.
on_wakeword_detection_start : una función invocable activada cuando el sistema comienza a escuchar las palabras de Wake
on_wakeword_detection_end : una función invocable activada cuando se detiene para escuchar las palabras de Wake (por ejemplo, debido al tiempo de espera o la palabra de vigilia detectada)
¡Las contribuciones siempre son bienvenidas!
MIT
Kolja Beigel
Correo electrónico: [email protected]
Github