Можно ли заставить Google Assistant работать с dsn oop? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь запустить двух помощников одновременно. С одной стороны, я могу запустить Алекса без проблем. С другой стороны, я могу без проблем запустить Google Assistant.

Однако, когда я пытаюсь запустить оба одновременно, это выдает мне ошибки, потому что у одного есть эксклюзивный доступ к моему микрофону.

После прочтения я узнал о плагине dsn oop. Это должно позволить мне делить микрофон между приложениями. Поэтому я попытался изменить файл .asoundr c, чтобы использовать dsn oop.

. Я проверил это с помощью arecord в двух терминалах, и я могу записывать одновременно без каких-либо проблем. Но как только я хочу запустить Google Assistant, я получаю сообщение об ошибке:

(Google) pi@Thomas:~ $ googlesamples-assistant-pushtotalk
INFO:root:Connecting to embeddedassistant.googleapis.com
Expression 'paInvalidSampleRate' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2048
Expression 'PaAlsaStreamComponent_InitialConfigure( &self->capture, inParams, self->primeBuffers, hwParamsCapture, &realSr )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2719
Expression 'PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer, &inputLatency, &outputLatency, &hostBufferSizeMode )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 2843
Traceback (most recent call last):
  File "/home/pi/Assistants-Pi/Google/bin/googlesamples-assistant-pushtotalk", line 8, in <module>
    sys.exit(main())
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/googlesamples/assistant/grpc/pushtotalk.py", line 351, in main
    flush_size=audio_flush_size
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/googlesamples/assistant/grpc/audio_helpers.py", line 190, in __init__
    blocksize=int(block_size/2),  # blocksize is in number of frames.
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/sounddevice.py", line 1345, in __init__
    **_remove_self(locals()))
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/sounddevice.py", line 861, in __init__
    'Error opening {0}'.format(self.__class__.__name__))
  File "/home/pi/Assistants-Pi/Google/lib/python3.7/site-packages/sounddevice.py", line 2653, in _check
    raise PortAudioError(errormsg, err)
sounddevice.PortAudioError: Error opening RawStream: Invalid sample rate [PaErrorCode -9997]

Я попытался ввести все разные частоты дискретизации в моем .asoundr c, но, похоже, ни одна из них не работает. Кто-нибудь еще имеет эту проблему или знает, как ее решить?

Вот так теперь выглядит мой файл .asoundr c (который работает для arecord бок о бок в двух терминалах):

pcm.!default {
    type asym
    playback.pcm {
        type plug
        slave.pcm "output"
    }
    capture.pcm {
        type plug
        slave.pcm "input"
    }
}
pcm.output {
    type hw
    card 0
    rate 16000
}
ctl.!default {
    type hw
    card 0
}
pcm.input {
    type dsnoop
    card 1
}
...