Я пытаюсь запустить двух помощников одновременно. С одной стороны, я могу без проблем запустить Alexa. С другой стороны, я могу без проблем запустить помощника Google.
Однако, когда я пытаюсь запустить оба одновременно, это дает мне ошибки, потому что у одного есть эксклюзивный доступ к моему микрофону.
После некоторого чтения я узнал о плагине dsnoop. Это должно позволить мне разделить microhpone между приложениями. Поэтому я попытался изменить файл .asoundrc, чтобы использовать dsnoop.
Я проверил это с помощью 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]
Я пытался ввести все разные частоты дискретизации в свой .asoundrc, но, похоже, ни одна из них не работает. У кого-нибудь еще есть эта проблема или знает, как ее решить?
Вот как теперь выглядит мой файл .asoundrc (который работает для 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
}
1 ответ
Это работает для меня (только часть dsnoop - другое сложнее):
pcm.dsnoopUB1 {
type dsnoop # this plugin splits one capture stream to more
ipc_key 2052 # (IPC = Inter-Process Communication) must be unique
ipc_key_add_uid 0 # multi-user sharing
ipc_perm 0666 # permissions for multi-user sharing
slave {pcm "hw:UB1,0"; channels 1} # HW identification (see arecord -l), micrpohone - mostly mono
}
pcm.!default {
type asym
playback.pcm "plug:assistJK"
capture.pcm "plug:dsnoopUB1"
}
Я проверил это снова и пришел к выводу, что вам нужно определить только ipc_key. В моем случае это работает - я могу без проблем запустить два (или более) экземпляра Google Assistant SDK.
Похожие вопросы
Новые вопросы
raspberry-pi
Raspberry Pi - это небольшое, недорогое устройство на базе ARM. ТОЛЬКО ДЛЯ ПРОГРАММИРОВАНИЯ. Вопросы по его использованию следует задавать на https://raspberrypi.stackexchange.com/