Ich habe mit ReSpeaker eine Soundkamera erstellt, um TouchDesigner zu lernen. Ich habe es gemacht, weil ich dachte, es könnte interessant sein, den Sound zu visualisieren, indem ich SSL (Sound Source Localization) mit ReSpeaker durchführe und Effekte in Richtung der Ankunft des Sounds hinzufüge. Ich beschloss, dies eine Tonkamera zu nennen.
Ich habe mir schon lange Sorgen darüber gemacht, aber wie kann ich diese Art von visuellem Programmierprodukt auf Qiita teilen, damit es leicht zu sehen ist ...? Vorerst werde ich dieses Mal mit dem Bild gehen.
Der Inhalt ist sehr einfach. Sie müssen lediglich das Bild mit Videodevicein von der Kamera lesen, die Position des folgenden GIF-Bilds angeben und es überlagern.
Da SSL in rohem Python ausgeführt wird, werden die Ergebnisse von diesem Prozess in OSC empfangen.
ReSpeaker verwendet v2.0. Ich habe auch 1.0, was genauer zu sein scheint, aber aus irgendeinem Grund konnte ich keine Verbindung zu meinem Windows 10 herstellen, also gab ich auf. Ich war verbunden ...
ReSpeaker v2.0 https://github.com/respeaker/usb_4_mic_array
Aus dieser Bibliothek wird von dem Ort, an dem DoA (Direction of Arrival) ausgeführt wird, nur der Wert der Schallquellenrichtung extrahiert und von OSC übertragen. Bitte beachten Sie, dass Sie ziemlich süchtig nach Firmware sind. Übrigens mache ich es diesmal auf der Python-Seite, aber da die LED in Schallquellenrichtung auch mit dem Mikrofonarray alleine aufleuchtet, scheint es, dass die Geräteseite auch die Schallquellenrichtung schätzt. Auf den ersten Blick ist dies genauer. Wenn Sie also die Daten extrahieren können, möchten Sie diese möglicherweise verwenden.
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
Ordnen Sie so an, dass der Ursprung des Mikrofonarrays und der Ursprung der Kamera übereinstimmen. Dieses Mal habe ich die c920-Webkamera von Logicool verwendet. Überprüfen Sie vorab den Blickwinkel der Kamera.
Wenn ich versuche, es zu bewegen, sieht es so aus. Es gibt eine kleine Verzögerung, aber können Sie den Effekt sehen, der nach der Verfolgung des Smartphones auftritt?
— hatbot (@hatbot3) November 13, 2020
Hier ist auch ein Video eines tickenden Häkchens.
— hatbot (@hatbot3) November 13, 2020
Diesmal war der Effekt eindimensional, da das Mikrofonarray flach angeordnet war. Wenn Sie das Mikrofonarray jedoch dreidimensional anordnen oder zwei ReSpeaker verwenden, sollten Sie in der Lage sein, den Effekt an einer Stelle hinzuzufügen.
Recommended Posts