[PYTHON] Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker

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.

Berühren Sie die Designerseite

スクリーンショット 2020-11-13 191013.png 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. 2 - コピー.gif

Da SSL in rohem Python ausgeführt wird, werden die Ergebnisse von diesem Prozess in OSC empfangen.

ReSpeaker Seite

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

Rahmen

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.

Image from iOS.jpg

Funktionsprüfung

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?

Hier ist auch ein Video eines tickenden Häkchens.

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

Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Die Geschichte, wie man mit discord.py einen Fragenkasten-Bot erstellt
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
Die Geschichte eines Mel-Icon-Generators
Die Geschichte einer Box, die Peppers AL Memory und MQTT miteinander verbindet
Die Geschichte der Erstellung einer Webanwendung, die umfangreiche Lesungen mit Django aufzeichnet
Die Geschichte eines neuronalen Netzwerks der Musikgeneration
Ein Server, der mit Flasche.py und OpenCV die Anzahl der Personen vor der Kamera zurückgibt
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte des Exportierens eines Programms
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Eine Geschichte über die Vorhersage von Präfekturen aus Städtenamen mit Jubatus
Die Geschichte, ein Tool zu erstellen, das auf Mac und Windows auf der Spieleentwicklungsseite ausgeführt wird
Die Geschichte einer unveränderlichen Form
Die Geschichte, deep3d auszuprobieren und zu verlieren
Die Geschichte der Verarbeitung A von Blackjack (Python)
Eine Geschichte, die die Gegenwart von Qiita mit Qiita API + Elasticsearch + Kibana visualisiert
Die Geschichte eines Parksensors in 10 Minuten mit dem GrovePi + Starter Kit
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Erstellen Sie DNN-CRF mit Chainer und erkennen Sie den Akkordfortschritt der Musik
Die Geschichte, ein Paket zu erstellen, das den Betrieb von Juman (Juman ++) & KNP beschleunigt
Die Geschichte, ein Tool zum Laden von Bildern mit Python zu erstellen ⇒ Speichern unter
Die Geschichte des tiefen Lernens mit TPU
Darstellung von Containern in einem verschachtelten Rahmen (schematisch) in Jupyter und was ich bei der Erstellung untersucht habe
Die Geschichte eines virtuellen Planetariums [bis es einem Anfänger gelingt, ein Modell mit einem Skript zu erstellen]
Eine Geschichte über die Berechnung der Geschwindigkeit eines kleinen Balls, der mit Python und Sympy beim Luftwiderstand fällt
Die Geschichte der Herstellung des Mel Icon Generator Version 2
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API
Probieren Sie einen datengesteuerten Test mit Selenium Python Bindings und py.test aus
Die Geschichte, einen Line Bot zu erstellen, der uns den Zeitplan für die Wettbewerbsprogrammierung erzählt
Berücksichtigung der Stärken und Schwächen von Python
Die Geschichte von soracom_exporter (Ich habe versucht, SORACOM Air mit Prometheus zu überwachen)
Holen Sie sich mit Python den Aktienkurs eines japanischen Unternehmens und erstellen Sie eine Grafik
Eine Geschichte darüber, wie man das Atomfeld (XML-Telegramm) der Meteorologischen Agentur mit einem Raspeltorte bekommt und twittert
Die Geschichte von Airflows Webserver und DAG, deren Laden lange dauert
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
Eine Geschichte über den Versuch, mit der kostenlosen Stufe von AWS zur COVID-19-Analyse beizutragen, und das Scheitern
Die Geschichte des Starts eines Minecraft-Servers von Discord
Eine Geschichte, die den Aufwand für Betrieb / Wartung reduziert
Versuchen Sie, eine einfache Website mit Responder und sqlite3 zu erstellen
Die Geschichte von Python ohne Inkrement- und Dekrementoperatoren.
[Touch Designer] Ändern Sie die Darstellungsfarbe von Button COMP
Die Geschichte des Stoppens des Produktionsdienstes mit dem Befehl hostname
Geben Sie die Lautstärke unter Linux an und spielen Sie den Sound ab
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Eine Geschichte über das Ausprobieren von pyenv, virtualenv und virtualenvwrapper
Machen Sie LCD-Screenshots mit Python-LEGO Mindstorms
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Zip 4 Gbyte Problem ist eine Geschichte der Vergangenheit
Eine Geschichte, die die Lieferung von Nico Nama analysierte.
Ein Memorandum bei der Herstellung einer Überwachungskamera mit Raspeye