-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvoice_input.py
46 lines (37 loc) · 1.21 KB
/
voice_input.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import vosk
import sys
import queue
import json
import sounddevice as sd
import speech_recognition
sr = speech_recognition.Recognizer()
sr.pause_threshold = 0.5
model = vosk.Model("model")
samplerate = 16000
device = 1
q = queue.Queue()
def callback(indata, frames, time, status):
if status:
print(status, file=sys.stderr)
q.put(bytes(indata))
def va_listen(voice):
try:
with sd.RawInputStream(samplerate=samplerate, blocksize=8000, device=device, dtype="int16",
channels=1, callback=callback):
rec = vosk.KaldiRecognizer(model, samplerate)
while True:
data = q.get()
if rec.AcceptWaveform(data):
query = json.loads(rec.Result())["text"]
return query
except:
return None
def record_volume():
with speech_recognition.Microphone() as mic:
sr.adjust_for_ambient_noise(source=mic, duration=0.5)
audio = sr.listen(source=mic)
query = sr.recognize_google(audio_data=audio, language="ru-RU").lower()
print(query)
return query
if __name__ == '__main__':
main()