0

我正在使用 Windows 和 python。目标很简单,运行main.py启动语音识别,一旦识别出所说的内容,就会将文本返回到main.py. 语音识别程序可以毫无问题地识别,问题在于多线程并将结果返回到main.py.

这是main.py:

import threading
from speechEngine.recognize import *
from SpeechSynthesis.speech import *
from core.AI import *
spch= "default"
newthread=threading.Thread(target=speechrec())
newthread.start()
while(True):
    if(spch == "default"):
        print("at default")
        continue
    else:
        print(spch)
        result=process(spch)
        speak(result)
        spch="default"

这是语音识别,称为新线程:

import argparse
import os
import queue
from typing import Text
import sounddevice as sd
import vosk
import sys
import json
#from vosk import SetLogLevel
#SetLogLevel(-1)
def speechrec():
    q = queue.Queue()
    "a lot of argument lines have been deleted to increase readability"

    try:
        if args.model is None:
            args.model = "model"
        if args.samplerate is None:
            device_info = sd.query_devices(args.device, 'input')
            args.samplerate = int(device_info['default_samplerate'])

            model = vosk.Model(args.model)
            with sd.RawInputStream(samplerate=args.samplerate, blocksize = 8000, device=args.device, dtype='int16', channels=1, callback=callback):
                rec = vosk.KaldiRecognizer(model, args.samplerate)
                while True:
                    data = q.get()
                    if rec.AcceptWaveform(data):
                        vc=rec.FinalResult()   #produces raw output of what the user said
                        vc=json.loads(vc)
                        vc=vc['text']    #converts the user speech to text format
                        if vc != '':
                            global spch
                            spch = vc          
    except KeyboardInterrupt:
        parser.exit(0)
4

0 回答 0