47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import threading
|
|
import queue
|
|
import json
|
|
|
|
audio_queue = queue.Queue()
|
|
SAMPLE_RATE = 16000
|
|
|
|
def vosk_listener():
|
|
import vosk
|
|
import pyaudio
|
|
|
|
VOSK_MODEL_PATH = "/home/tino/Documents/_Documents/Schule/4 Wilhelm Maybach Schule/2BKI Jahr 2/Abschlussprojekt/test assistant/assistant_all_in_one/vosk-model-de-0.21/"
|
|
|
|
model = vosk.Model(VOSK_MODEL_PATH)
|
|
rec = vosk.KaldiRecognizer(model, SAMPLE_RATE)
|
|
|
|
p = pyaudio.PyAudio()
|
|
stream = p.open(
|
|
format=pyaudio.paInt16,
|
|
channels=1,
|
|
rate=SAMPLE_RATE,
|
|
input=True,
|
|
frames_per_buffer=4000
|
|
)
|
|
stream.start_stream()
|
|
|
|
while True:
|
|
data = stream.read(4000, exception_on_overflow=False)
|
|
if rec.AcceptWaveform(data):
|
|
result = json.loads(rec.Result())
|
|
text = result.get("text", "")
|
|
if text:
|
|
audio_queue.put(text)
|
|
|
|
def main():
|
|
threading.Thread(target=vosk_listener, daemon=True).start()
|
|
|
|
while True:
|
|
try:
|
|
text = audio_queue.get(timeout=0.1)
|
|
print("[SST]", text)
|
|
except queue.Empty:
|
|
pass
|
|
|
|
if __name__ == "__main__":
|
|
main()
|