La localisation de la source sonore est l'endroit où le son est entendu et imaginez un son stéréophonique ou binoral. Pour un son stéréophonique, la source sonore est localisée afin que l'instrument puisse être entendu par l'arrière.
Cette fois, nous utiliserons ReSpeaker Mic Array v2.0.
En gros, toutes les utilisations et autres options sont écrites ici, mais je vais les résumer brièvement.
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
Je pense que le dossier usb_4_mic_array a été créé. Créez et exécutez le code suivant sous celui-ci.
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
Résultat de sortie ↓
~/usb_4_mic_array$ python3 DOA.py
122
121
120
122
Quand j'exécute ce code ImportError: No module named usb.core Quand ça sort
sudo apt-get install python-usb python3-usb
Éxécuter.
De plus, si l'autorisation est refusée, donnez à udev l'accès à l'appareil.
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 -un nom d'utilisateur plugdev
sudo chmod a+r /etc/udev/rules.d/10-any_name_is_ok.rules
sudo udevadm control --reload-rules
udevadm trigger
Après cela, il sera reflété lors du redémarrage.
Il existe de nombreuses options pour ReSpeaker. [Liste des paramètres facultatifs (questions fréquemment posées Q1)] (https://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/#faq)
À titre d'exemple, nous utiliserons SPEECHDETECTED pour implémenter la localisation du son pour la voix humaine uniquement. 0 = false (no speech detected) 1 = true (speech detected) Donc, modifiez DOA.py comme suit.
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
Avec cela, vous pouvez empêcher la sortie de l'angle même si vous applaudissez, par exemple.
Comme ces codes utilisent usb_4_mic_array / Tuning.py, vous devez mettre Tuning.py dans un dossier ou écrire la fonction de Tuning.py dans le code pour l'exécuter en dehors de ce dossier.
Voici un exemple de réécriture pour qu'il puisse être utilisé dans n'importe quel dossier.
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)
Avec cela, vous pouvez localiser la source sonore dans n'importe quel dossier.
Faites ce qui suit où vous voulez (à la maison ou dans 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
Quand tu fais ça, Comment se réveiller pendant 3 secondes Comment briller Pensez pendant 3 secondes parler 6 secondes pour briller off Comment briller pendant 3 secondes Faire. Pour d'autres façons de briller, reportez-vous à pixel_ring / pixel_ring / usb_pixel_ring_v2.py.