Raspberry pi 有可能让谷歌助手与dsnoop合作吗?

Raspberry pi 有可能让谷歌助手与dsnoop合作吗?,raspberry-pi,google-assistant-sdk,Raspberry Pi,Google Assistant Sdk,我想同时管理两名助手。 一方面,我可以毫无问题地运行Alexa。 另一方面,我可以运行谷歌助手没有任何问题 但是,当我尝试同时运行这两个话筒时,会出现错误,因为其中一个话筒可以独占访问我的话筒 经过一些阅读,我发现了关于dsnoop插件。这应该允许我在应用程序之间共享microhpone。因此,我尝试将.asoundrc文件更改为使用dsnoop 我在两个终端上用一条记录进行了测试,我可以同时记录,没有任何问题。 但当我想启动Google助手时,我得到一个错误: (Google) pi@Thom

我想同时管理两名助手。 一方面,我可以毫无问题地运行Alexa。 另一方面,我可以运行谷歌助手没有任何问题

但是,当我尝试同时运行这两个话筒时,会出现错误,因为其中一个话筒可以独占访问我的话筒

经过一些阅读,我发现了关于dsnoop插件。这应该允许我在应用程序之间共享microhpone。因此,我尝试将.asoundrc文件更改为使用dsnoop

我在两个终端上用一条记录进行了测试,我可以同时记录,没有任何问题。 但当我想启动Google助手时,我得到一个错误:

(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]
这适用于我(仅dsnoop部分-其他部分更复杂):


我再次测试了它,我的结论是您只需要定义ipc_键。在我的情况下,它是有效的-我可以启动两个(或更多)google assistant sdk实例而不会出现任何问题。

虽然只提供代码答案是可以接受的,但如果您还可以提供代码解释并帮助人们理解它解决问题的原因,它通常对社区更有用。这可以减少后续问题的数量,并帮助新开发人员理解底层概念。你介意用更多的细节更新你的问题吗?
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
}
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"
}