Проблема с микрофоном при использовании распознавания речи - PullRequest
0 голосов
/ 10 июля 2020

У меня есть Jetson Xavier, USB-микрофон и веб-камера с mi c внутри. Всего 2 микрофона. Я использую распознавание речи. Когда я пытаюсь использовать и веб-камеру, и usb mi c, mi c на веб-камере используется программным обеспечением по умолчанию. Я хочу использовать USB Mi c, когда я подключил оба устройства. Я нашел его device_index и записал в программу. Однако у меня есть ошибка:

"OSError: [Errno -9997] Invalid sample rate"

Это мой микрофон:

Microphone with name "UAC 1.0 Microphone & HID-Mediak: USB Audio (hw:2,0)" found for `Microphone(device_index=24)

Вы можете найти соответствующий код ниже. Я попытался изменить частоту дискретизации на 44100. Ошибка исчезла, но mi c не работает.

PS: USB Mi c работает нормально, когда я подключаю его самостоятельно. Код использует его по умолчанию. У меня проблема только тогда, когда у меня 2 подключенных устройства.

from speech_recognition import (
    Microphone,
    AudioSource,
    AudioData
)

class xMicrophone(Microphone):
    def __init__(self, device_index=None, sample_rate=16000, chunk_size=1024,
                 mute=False):
        Microphone.__init__(self, device_index=device_index,
                            sample_rate=sample_rate, chunk_size=chunk_size)
        self.muted = False
        if mute:
            self.mute()
        self.StreamClass = MutableStream

    def __enter__(self):
        return self._start()

    def _start(self):
        """Open the selected device and setup the stream."""
        assert self.stream is None, \
            "This audio source is already inside a context manager"
        with contexts.ignore_stderr(), contexts.ignore_stdout():
            self.audio = pyaudio.PyAudio()
        self.stream = self.StreamClass(self.audio.open(
            input_device_index=self.device_index, channels=1,
            format=self.format, rate=self.SAMPLE_RATE,
            frames_per_buffer=self.CHUNK,
            input=True,  # stream is an input stream
        ), self.format, self.muted)
        return self
...