Bei der Lokalisierung von Tonquellen ist der Ton zu hören, und stellen Sie sich stereophonen oder binoralen Ton vor. Bei stereophonem Klang ist die Schallquelle so lokalisiert, dass das Instrument von hinten gehört werden kann.
Dieses Mal verwenden wir ReSpeaker Mic Array v2.0.
Grundsätzlich sind alle Verwendungs- und anderen Optionen hier geschrieben, aber ich werde sie kurz zusammenfassen.
ubuntu 18.04 python3
sudo apt-get update
sudo pip install pyusb click
git clone https://github.com/respeaker/usb_4_mic_array.git
cd usb_4_mic_array
sudo python dfu.py --download 6_channels_firmware.bin
Ich denke, der Ordner usb_4_mic_array wurde erstellt. Erstellen Sie den folgenden Code und führen Sie ihn aus.
DOA.py
from tuning import Tuning
import usb.core
import usb.util
import time
dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
if dev:
Mic_tuning = Tuning(dev)
print(Mic_tuning.direction)
while True:
try:
print(Mic_tuning.direction)
time.sleep(1)
except KeyboardInterrupt:
break
Ausgabeergebnis ↓
~/usb_4_mic_array$ python3 DOA.py
122
121
120
122
Wenn ich diesen Code ausführe ImportError: No module named usb.core Wenn es herauskommt
sudo apt-get install python-usb python3-usb
Ausführen.
Wenn die Berechtigung verweigert wird, geben Sie udev Zugriff auf das Gerät.
sudo touch /etc/udev/rules.d/10-any_name_is_ok.rules
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2886", ATTR{idProduct}=="0018", MODE="0666", GROUP="plugdev"' | sudo tee 10-any_name_is_ok.rules
sudo gpasswd -ein Benutzername plugdev
sudo chmod a+r /etc/udev/rules.d/10-any_name_is_ok.rules
sudo udevadm control --reload-rules
udevadm trigger
Danach wird es beim Neustart angezeigt.
Es gibt viele Optionen für ReSpeaker. [Liste der optionalen Parameter (häufig gestellte Fragen Q1)] (https://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/#faq)
Als Beispiel verwenden wir SPEECHDETECTED, um die Schalllokalisierung nur für die menschliche Stimme zu implementieren. 0 = false (no speech detected) 1 = true (speech detected) Ändern Sie also DOA.py wie folgt.
voise_angle.py
from tuning import Tuning
import usb.core
import usb.util
import time
dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)
if dev:
Mic_tuning = Tuning(dev)
while True:
try:
if Mic_tuning.read('SPEECHDETECTED') == 1:
print(Mic_tuning.direction)
time.sleep(1)
except KeyboardInterrupt:
break
Auf diese Weise können Sie verhindern, dass der Winkel ausgegeben wird, selbst wenn Sie beispielsweise in die Hände klatschen.
Da diese Codes usb_4_mic_array / Tuning.py verwenden, müssen Sie Tuning.py in einen Ordner legen oder die Funktion Tuning.py in den Code schreiben, um sie außerhalb dieses Ordners auszuführen.
Hier ist ein Beispiel für das Umschreiben, damit es in jedem Ordner verwendet werden kann.
get_angle.py
from time import sleep
import usb
import usb.core
import usb.util
import struct
dev = usb.core.find(idVendor=0x2886,idProduct=0x0018)
TIMEOUT = 100000
# PARAMETERS for sound localization
PARAMETERS = {
'DOAANGLE': (21, 0, 'int', 359, 0, 'ro', 'DOA angle. Current value. Orientation depends on build configuration.'),
'SPEECHDETECTED': (19, 22, 'int', 1, 0, 'ro', 'Speech detection status.', '0 = false (no speech detected)',
'1 = true (speech detected)'),
}
def read(param_name):
try:
data = PARAMETERS[param_name]
except KeyError:
return
id = data[0]
cmd = 0x80 | data[1]
if data[2] == 'int':
cmd |= 0x40
length = 8
response = dev.ctrl_transfer(
usb.util.CTRL_IN | usb.util.CTRL_TYPE_VENDOR | usb.util.CTRL_RECIPIENT_DEVICE,
0, cmd, id, length, TIMEOUT)
response = struct.unpack(b'ii', response.tostring())
if data[2] == 'int':
result = response[0]
else:
result = response[0] * (2. ** response[1])
return result
# Find angular
if dev:
while True:
if read('SPEECHDETECTED') == 1:
print(read('DOAANGLE'))
sleep(1)
Mit dieser Option können Sie die Tonquelle in einem beliebigen Ordner lokalisieren.
Führen Sie die folgenden Schritte aus, wo immer Sie möchten (entweder zu Hause oder in usb_4_mic_array).
python
git clone https://github.com/respeaker/pixel_ring.git
cd pixel_ring
sudo python setup.py install
sudo python examples/usb_mic_array.py
Wenn Sie dies tun, Wie man für 3 Sekunden aufwacht Wie man glänzt, denke 3 Sekunden lang nach Sprich 6 Sekunden, um zu glänzen aus So leuchten Sie 3 Sekunden lang Machen. Weitere Möglichkeiten zum Leuchten finden Sie unter pixel_ring / pixel_ring / usb_pixel_ring_v2.py.
Recommended Posts