"""Test STT with mic""" from jarvis.audio.capture import AudioCapture from jarvis.stt.faster_whisper_engine import FasterWhisperSTT from jarvis.audio.vad import create_vad from jarvis.config import load_config import numpy as np, time, collections cfg = load_config(None) vad = create_vad(cfg) stt = FasterWhisperSTT(model=cfg.get('stt',{}).get('model','base'), device='cpu', compute_type='int8') cap = AudioCapture() cap.start() print("Speak, with 1.5s silence to trigger transcription. Ctrl+C to exit") buffer = [] silence_start = None recording = False try: while True: chunk = cap.read(timeout=0.1) if chunk is None: continue is_speech = vad.is_speech(chunk) if is_speech: if not recording: print("Speech start") recording = True buffer.append(chunk) silence_start = None else: if recording: if silence_start is None: silence_start = time.time() buffer.append(chunk) if time.time() - silence_start > 1.2: # transcribe audio = np.concatenate(buffer) print(f"Transcribing {len(audio)/16000:.2f}s...") res = stt.transcribe(audio) print(f" => {res.get('text')}") buffer = [] recording = False silence_start = None print("Listening again...") # else silence, continue except KeyboardInterrupt: pass finally: cap.stop()