Files
Transcripcion_audio_texto/script_audio_a_texto.py
T

57 lines
2.0 KiB
Python

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()