Как использовать микрофон в приложении pyKaldi?

#python #kaldi

Вопрос:

Я разрабатываю приложение, использующее распознавание голоса через pyKaldi, я хотел бы декодировать поток с микрофона в цикле. До сих пор я видел только примеры с SequentialWaveReader, и нет возможности легко включить микрофон. Я использую здесь PyAudio для микрофона. Пример моего текущего кода ниже, где я сохраняю каждые 5 секунд в wav-файл, а затем декодирую его.

  stream = p.open(format=FORMAT, channels=CHANNELS,#input_device_index=1,  rate=RATE, input=True)#, frames_per_buffer=audio_batch_size) RECORD_SECONDS = 5 # while True: print("Bot Ready") frames = []  for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):  data = stream.read(CHUNK)  frames.append(data)  print("* done recording")  stream.stop_stream() stream.close() p.terminate()  wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() for key, wav in SequentialWaveReader("scp:wav.scp"):  feat_pipeline = OnlineNnetFeaturePipeline(feat_info)  asr.set_input_pipeline(feat_pipeline)  feat_pipeline.accept_waveform(RATE, wav.data()[0])  feat_pipeline.input_finished()  out = asr.decode()  print(key,out['likelihood'], out["text"], flush=True)