ReSpeaker에서 발화자의 목소리 방향 지정

13323 단어 ReSpeakerPython

음원 포지셔닝


음원 포지셔닝이란 어디서 들리는 소리인지 스테레오와 오보에를 상상해보세요.스테레오는 음원으로 포지셔닝돼 악기가 뒤에서 들려오는 느낌을 준다.
이번에 사용ReSpeaker Mic Array v2.0.

사용 방법과 기타 옵션은 기본적으로 여기에 쓰여 있으니 간단하게 요약해 봅시다.

음원 포지셔닝 설치


컨디션


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
usb_4_mic_아라이 폴더가 만들어진 것 같습니다.
다음 코드를 만들고 실행합니다.
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
출력결과↓
~/usb_4_mic_array$ python3 DOA.py 
122
121
120
122

오류 발생 시


이 코드를 실행할 때
ImportError: No module named usb.core
하면, 만약, 만약...

sudo apt-get install python-usb python3-usb
집행하다.
또한permission denied라면 udev를 통해 장치에 접근할 수 있습니다.
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 -a ユーザー名 plugdev
sudo chmod a+r /etc/udev/rules.d/10-any_name_is_ok.rules
sudo udevadm control --reload-rules
udevadm trigger
나중에 시동을 걸면 반영될 겁니다.

다른 사람의 목소리에만 반응하다


ReSpeaker에는 여러 가지 옵션이 있습니다.
옵션 매개변수 목록(FAQ1)
예를 들어 SPEECHDETECTED를 사용하여 사람의 목소리만 있는 음원 포지셔닝을 실현했다.
0 = false (no speech detected)
1 = true (speech detected)
따라서 DOA는 다음과 같습니다.py를 변경합니다.
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
이렇게 하면 예를 들어 박수를 쳐도 각도가 출력되지 않는다.

주의


이 코드들은 usb입니다4_mic_array/Tuning.py를 사용했기 때문에 이 폴더 이외에 Tuning을 실행해야 합니다.py를 폴더에 넣거나 코드에 넣거나 Tuning을 합니다.py의 함수 등을 기록해야 합니다.
다음은 폴더에 관계없이 사용할 수 있는 덮어쓰기 예입니다.
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)
이렇게 되면 어느 폴더 아래에서도 음원을 찾을 수 있다.

사은품: LED 컨트롤


좋아하는 곳에서 다음 동작을 수행합니다(home도 좋고 usb4 micaray 내에서도 좋아요)
git clone https://github.com/respeaker/pixel_ring.git
cd pixel_ring
sudo python setup.py install
sudo python examples/usb_mic_array.py
이 작업을 수행한 후
wakeup의 발광 방식 3초.
think의 발광 방식 3초
6초 광선
오프 발광 3초
만들다
다른 발광 방식은 픽셀입니다.ring/pixel_ring/usb_pixel_ring_v2.py를 참조하십시오.

좋은 웹페이지 즐겨찾기