transcriptor.py-Frecuencia de muestreo-16000
import queue
import sounddevice as sd
from vosk import Model, KaldiRecognizer
import json
import os
import sys
# Ruta al modelo de Vosk
MODEL_PATH = "models/vosk-model-small-es-0.42"
# Frecuencia de muestreo (ajústala si tu micrófono no es 16000)
SAMPLE_RATE = 16000 # o 44100
# Cola para almacenar fragmentos de audio
q = queue.Queue()
# Callback de audio que guarda datos en la cola
def audio_callback(indata, frames, time, status):
if status:
print("⚠️ Estado:", status, file=sys.stderr)
q.put(bytes(indata))
def main():
# Verifica que el modelo exista
if not os.path.exists(MODEL_PATH):
print(f"❌ Modelo no encontrado en: {MODEL_PATH}")
print("Descárgalo desde https://alphacephei.com/vosk/models")
return
print("📦 Cargando modelo...")
model = Model(MODEL_PATH)
rec = KaldiRecognizer(model, SAMPLE_RATE)
try:
print("🎤 Dictado iniciado. Habla por el micrófono...\n(CTRL+C para detener)\n")
# Inicia la captura de audio
with sd.RawInputStream(samplerate=SAMPLE_RATE, blocksize=4000, dtype='int16',
channels=1, callback=audio_callback):
while True:
data = q.get()
if rec.AcceptWaveform(data):
res = json.loads(rec.Result())
print("📝 Texto:", res.get("text", ""))
else:
partial = json.loads(rec.PartialResult())
print("⏳ Parcial:", partial.get("partial", ""), end='\r')
except Exception as e:
print(f"💥 Error: {e}")
print("🔧 Verifica que el micrófono esté conectado y funcionando.")
print("🧪 Puedes correr este código para ver tus dispositivos de entrada:\n")
print(" import sounddevice as sd\n print(sd.query_devices())")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n🛑 Dictado finalizado por el usuario.")
Comentarios
Publicar un comentario