TouchDesigner와 ReSpeaker로 사운드 카메라를 만든 이야기

TouchDesigner의 학습을 위해, ReSpeaker를 사용해 소리 카메라를 만들었다.
ReSpeaker에서 SSL(Sound Source Localization)을 실시해, 소리의 도래 방향에 이펙트를 넣는 것으로, 소리를 가시화하면 재미있을지도 모른다고 생각해 제작했다.
이것을 소리 카메라라고 부르기로 했다.

TouchDesigner 측




이것은 쭉 고민이었습니다만, 이런 비주얼 프로그래밍계의 제작물은, Qiita로 어떻게 공유하면 보기 쉬울까요…
우선 이번에는 이미지로 갑니다.

내용은 매우 간단합니다.
videodevicein에서 카메라의 이미지를 읽고 거기에 아래와 같은 gif 이미지를 위치를 지정하여 겹쳐 있을 뿐입니다.


SSL은 원시 Python으로 작업하므로 OSC에서 프로세스에서 결과를 받습니다.

ReSpeaker측



ReSpeaker는 v2.0을 사용했습니다. 1.0도 가지고 있어, 그쪽이 정밀도로 그렇습니다만, 왠지 수중의 Windows10으로 접속할 수 없었기 때문에 단념했습니다. 예전에는 연결되었는데...

ReSpeaker v2.0
htps : // 기주 b. 코 m/레 s페아케 r/우 sb_4_미 c_아라 y

이 라이브러리에서 DoA(Direction of Arrival)라는 것을 하고 있는 곳에서 음원 방향의 값만을 추출하여 OSC로 전송합니다.
펌웨어의 쓰기등으로 상당히 빠지기 때문에 주의.
덧붙여서, 이번은 Python측에서 하고 있습니다만, 마이크 어레이 단독으로도 음원 방향의 LED가 점등하기 때문에, 디바이스측에서도 음원 방향의 추정은 하고 있는 모양.
확실히 보기는 이쪽이 정밀도가 좋기 때문에, 그 데이터를 빨아낼 수 있다면 그쪽을 사용하는 것이 좋을지도 모른다.

doa.py
from pythonosc import osc_message_builder
from pythonosc import udp_client
from tuning import Tuning
import usb.core
import usb.util
import time

osc_client = udp_client.SimpleUDPClient('127.0.0.1', 50000)

from infi.devicemanager import DeviceManager
dm = DeviceManager()
devices = dm.all_devices
for i in devices:
    try:
        print ('{} : address: {}, bus: {}, location: {}'.format(i.friendly_name, i.address, i.bus_number, i.location))
    except Exception:
        pass


import usb.backend.libusb1
backend = usb.backend.libusb1.get_backend(find_library=lambda x: "./libusb-1.0.dll")
dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
direction = 0

if dev:
    Mic_tuning = Tuning(dev)
    direction = Mic_tuning.direction
    print(Mic_tuning.direction)
    while True:
        try:
            if direction != Mic_tuning.direction:
                direction = Mic_tuning.direction
                osc_client.send_message("/direction", direction)
                print(direction)
            time.sleep(0.5)
        except KeyboardInterrupt:
            break


설정



마이크 어레이의 원점과 카메라의 원점이 일치하도록 배치된다.
카메라는 이번에는 logicool의 c920이라는 웹캠을 사용했다.
카메라의 화각은 사전에 조사해 두는 것.



동작 확인



움직여 보면 이런 느낌.
조금 러그가 있지만, 스마트 폰을 쫓아 이펙트가 들어가는 것을 알 수 있을까.

피 c. 라고 r. 이 m/NYk4rk×x5 — hatbot (@hatbot3) November 13, 2020


또, 가까운 곳에서 스테이플러를 둥글게 울린 동영상이 이쪽.

<script async=""src="https://platform.twitter.com/widgets.js"/>

이번은 마이크 어레이가 평면적인 배치였기 때문에 1차원적인 이펙트이지만, 마이크 어레이를 입체적으로 배치하거나, ​​ReSpeaker를 2대 사용하는 등, 스폿적으로 이펙트를 넣을 수도 있을 것이다.


좋은 웹페이지 즐겨찾기