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

Entradas más populares de este blog

index

Vosk en una Página Web

Proyecto de Transcripción de Voz en Tiempo Real