在 Microsoft Hololens 2 上捕捉声音方向

Capturing Sound Direction on Microsoft Hololens 2

我正在考虑为一些个人开发项目购买 Microsoft Hololens 2,但在我这样做之前,我想找到一些关于设备上的麦克风的信息。

  1. 是否有任何图表显示设备上放置麦克风的位置?根据我看到的图像,我无法弄清楚每个人的放置位置。我可以做出最好的猜测,但如果 Microsoft 发布了一张清晰的图像,那可能对我有用。
  2. 设备上的麦克风是否可单独寻址?
  3. Hololens/Microsoft API 是否提供确定声音发出方向的功能?

自几年前第一代以来,我还没有用 Hololens 做过任何开发,所以任何信息将不胜感激!

Are there any diagrams available that display where on the device the microphones are placed? I am having trouble figuring out where each one is placed based on the images I have seen. I could make a best guess, but if Microsoft has released an image making it clear, that would be potentially useful to me.

目前没有官方文档显示 hololens2 麦克风阵列的放置位置。但我相信你应该能够找到设备上五个麦克风的针孔。 HoloLens 2 的正面顶部有三个针孔,是用来捕捉周围噪音的麦克风。并且有两个麦克风捕捉用户的声音隐藏在眼镜的底部,它们配合将用户的声音与周围的噪音隔离开。

更多细节请参考Alex Kipman的演讲:Global Lecture 2019

Are the microphones on the device individual addressable?

实际上,Hololens2 在采集音频时,会创建一个包含 5 个通道的麦克风音频流。

我们可以使用 Windows audio session (WASAPI) sample 作为基础,因为使用 WASAPI 使我们能够对正在发生的事情进行非常精细的控制(示例中的场景 #4)

然后在 WASAPICapture.cpp 中,更改 WASAPICapture::ActivateCompleted() 函数以在设置 AudioClientProperties 时更改模式/类别

   audioProps.cbSize = sizeof(AudioClientProperties);
   audioProps.eCategory = AudioCategory_Media;
   audioProps.Options = AUDCLNT_STREAMOPTIONS_RAW;
   hr = m_AudioClient->SetClientProperties(&audioProps);
   if (FAILED(hr))
   {
       goto exit;
   }

最后根据下面table可以从麦克风数组中找出大家对应的频道

频道映射

  • 频道 1 – 左上麦克风

  • 频道 2 – 顶部中央麦克风

  • 频道 3 – 右上麦克风

  • 频道 4 – 左下麦克风

  • 频道 5 – 右下麦克风

Do the Hololens/Microsoft APIs provide the capability to Acoustic Localization from which sound is originating?

目前,Microsoft 未提供官方 library/API 来支持 HoloLens 的声学本地化。只能自己实现或者参考其他third-party库