Add initial project files including Vosk model and audio recognition script
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import sys
|
||||
import os
|
||||
import pyaudio
|
||||
from vosk import Model, KaldiRecognizer
|
||||
import keyboard
|
||||
|
||||
BUFFER = 500 # Tamaño del buffer de audio
|
||||
RECOGNITION_ACTIVE = False # Estado inicial del reconocimiento
|
||||
|
||||
# Carga el modelo de Vosk (español)
|
||||
model = Model("vosk-model-small-es-0.42")
|
||||
|
||||
# Inicializa PyAudio
|
||||
p = pyaudio.PyAudio()
|
||||
|
||||
# Configura el micrófono (entrada de audio)
|
||||
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=2000)
|
||||
stream.start_stream()
|
||||
|
||||
# Inicializa el reconocedor
|
||||
recognizer = KaldiRecognizer(model, 16000)
|
||||
|
||||
print("Presiona 'AltGr' + 'Ñ' para activar/desactivar el reconocimiento de voz...")
|
||||
|
||||
try:
|
||||
while True:
|
||||
# Detecta si 'AltGr' + 'Ñ' son presionadas juntas
|
||||
if keyboard.is_pressed('alt gr') and keyboard.is_pressed('ñ'):
|
||||
# Cambia el estado de activación del reconocimiento de voz
|
||||
RECOGNITION_ACTIVE = not RECOGNITION_ACTIVE
|
||||
state = "activado" if RECOGNITION_ACTIVE else "desactivado"
|
||||
print(f"Reconocimiento de voz {state}.")
|
||||
|
||||
# Espera a que se suelten las teclas antes de continuar
|
||||
while keyboard.is_pressed('alt gr') or keyboard.is_pressed('ñ'):
|
||||
pass
|
||||
|
||||
# Si el reconocimiento está activado, procesa el audio
|
||||
if RECOGNITION_ACTIVE:
|
||||
data = stream.read(BUFFER, exception_on_overflow=False) # Lee el flujo de audio del micrófono
|
||||
|
||||
# Procesa cada fragmento de audio en tiempo real
|
||||
if recognizer.AcceptWaveform(data):
|
||||
result = recognizer.Result() # Obtiene la transcripción de ese fragmento
|
||||
text = eval(result)['text'].encode('utf-8').decode('utf-8')
|
||||
text = text + ' ' # Agrega un espacio al final para separar las palabras
|
||||
print(text) # Imprime la transcripción
|
||||
keyboard.write(text) # Escribe el texto transcrito
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\nPrograma terminado por el usuario.")
|
||||
|
||||
# Cierra los recursos
|
||||
stream.stop_stream()
|
||||
stream.close()
|
||||
p.terminate()
|
||||
Reference in New Issue
Block a user