Skip to main content

ReSpeaker Mic Array

Descripción

El ReSpeaker Mic Array puede apilarse (conectarse) directamente en la parte superior del ReSpeaker Core para mejorar significativamente la experiencia de interacción por voz. Está desarrollado basándose en el micrófono inteligente XVSM-2000 de XMOS. La placa integra 7 micrófonos PDM para ayudar a mejorar el rendimiento DSP acústico del ReSpeaker a un nivel mucho más alto.

Características Clave

  • Captura de Voz de Campo Lejano
  • Localización de Fuente Acústica
  • Formación de Haz
  • Supresión de Ruido
  • Desreverberación
  • Cancelación de Eco Acústico

Especificaciones Técnicas

  • XVSM-2000 con 16 núcleos en su interior:
    • 16 núcleos lógicos en tiempo real en 2 tiles xCore.
    • Los núcleos comparten hasta 2000 MIPS en modo de doble emisión.
    • 512KB de SRAM interna de ciclo único y 2MB de flash integrada.
    • 16KB de OTP interna (máx. 8KB por tile),
    • PHY USB, totalmente compatible con la especificación USB 2.0.
    • E/S programable.
    • Suministra modo DFU.
  • 7 Micrófonos Digitales:
    • utilidad para reconocimiento de voz de campo lejano o localización de sonido.
    • ST MP34DT01-M.
    • Sensibilidad de -26 dBFS.
    • Punto de sobrecarga acústica de 120 dBSPL.
    • Relación señal-ruido de 61 dB.
    • Sensibilidad omnidireccional.
    • Salida PDM.
  • 12 LEDs RGB:
    • 256 niveles de brillo.
    • Transmisión de datos de línea de 800kHz.
  • Salida de audio:
    • Salida Aux de 3.5mm en la placa.
    • WOLFSON WM8960.
    • Salida estéreo de 24 o 16 bits a 16kHz.
    • 40 mW de potencia de salida en 16 Ω @ 3.3 V.
  • Sincronización de Reloj:
    • PLL en la placa.
    • Reloj de muestra programable para DAC, MIC. (Deshabilitado si se usa DSP en XVSM-2000).
  • Fuente de alimentación:
    • Suministro de 5V desde Micro USB o cabecera de expansión.
  • Tamaño:
    • Diámetro 70mm.
  • Peso:
    • 15.25g

Controlador para ReSpeaker Mic Array

  • Para usuarios de Windows, haga clic aquí para instalar el controlador
  • Para usuarios de Linux o Mac, no es necesario instalar el controlador

Extraer voz con ReSpeaker Core

Cuando el Mic Array está apilado en el ReSpeaker Core, será detectado automáticamente (verificar con aplay -l). Y recomendamos que puedas usar nuestra respeaker_python_library para desarrollar tu aplicación de interacción por voz para que no necesites preocuparte por si el Mic Array está encendido o no. Nuestra biblioteca verificará esto y elegirá el Mic Array cuando esté encendido.

También, en esa biblioteca, class Microphone, que está basada en Pyaudio, tiene un método llamado listen, para extraer voz. Ve nuestro código de ejemplo aquí para su uso.

Extraer voz en PC o Mac o Linux o Raspberry Pi

Aquí hay un ejemplo también basado en Pyaudio:

Primero, necesitas ejecutar el siguiente script para obtener el número de índice del dispositivo del Mic Array:

import pyaudio

p = pyaudio.PyAudio()
info = p.get_host_api_info_by_index(0)
numdevices = info.get('deviceCount')

for i in range(0, numdevices):
if (p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
print "Input Device id ", i, " - ", p.get_device_info_by_host_api_device_index(0, i).get('name')

Then, change RESPEAKER_INDEX = 1 to your index number. Run the script to record a speech.

import pyaudio
import wave

RESPEAKER_RATE = 16000
RESPEAKER_CHANNELS = 2
RESPEAKER_WIDTH = 2
# run getDeviceInfo.py to get index
RESPEAKER_INDEX = 1
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(
rate=RESPEAKER_RATE,
format=p.get_format_from_width(RESPEAKER_WIDTH),
channels=RESPEAKER_CHANNELS,
input=True,
input_device_index=RESPEAKER_INDEX,)

print("* recording")

frames = []

for i in range(0, int(RESPEAKER_RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(RESPEAKER_CHANNELS)
wf.setsampwidth(p.get_sample_size(p.get_format_from_width(RESPEAKER_WIDTH)))
wf.setframerate(RESPEAKER_RATE)
wf.writeframes(b''.join(frames))
wf.close()

Firmwares para ReSpeaker Mic Array

Puedes descargar los firmwares de ReSpeaker Mic array para DFU aquí. Hemos proporcionado dos versiones:

  • versión xvsm : versión inicial, produce datos de 2 canales con soporte dsp.
  • versión raw : produce datos en bruto de 8 canales de micrófono, este firmware no tiene soporte xvsm dsp, por lo que no admite algunas funciones como DOA, AEC y demás.

Por favor consulta aquí para actualizar firmware en Linux. Por favor consulta aquí para actualizar firmware en Mac.

HID para controlar ReSpeaker Mic Array

Los usuarios pueden controlar ReSpeaker Mic Array a través de USB HID. Por favor consulta nuestro Protocolo de comunicación.

Ten en cuenta que si estás usando la última versión raw, solo puedes controlar los LEDs.

Y aquí hay un ejemplo en python :

#!/usr/bin/env python

import respeaker.usb_hid as usb_hid

class MicArray:
def __init__(self):
self.hid = usb_hid.get()

def write(self, address, data):
data = self.to_bytearray(data)
length = len(data)
if self.hid:
packet = bytearray([address & 0xFF, (address >> 8) & 0x7F, length & 0xFF, (length >> 8) & 0xFF]) + data
packet = list(packet)
self.hid.write(packet)

def read(self, address, length):
self.hid.write(list(bytearray([address & 0xFF, (address >> 8) & 0xFF | 0x80, length & 0xFF, (length >> 8) & 0xFF])))
for _ in range(6):
data = self.hid.read()
# print [int(x) for x in data]
# skip VAD data
if int(data[0]) != 0xFF and int(data[1]) != 0xFF:
return data[4:(4 + length)]

@staticmethod
def to_bytearray(data):
if type(data) is int:
array = bytearray([data & 0xFF])
elif type(data) is bytearray:
array = data
elif type(data) is str:
array = bytearray(data)
elif type(data) is list:
array = bytearray(data)
else:
raise TypeError('%s is not supported' % type(data))
return array

def main():
import sys
import struct

mic = MicArray()

print("Using: %s" % usb_hid.usb_backend)

if len(sys.argv) < 3:
print('Usage: python {} w 0x0 0x000003'.format(sys.argv[0]))
sys.exit(1)

try:
if sys.argv[2].startswith('0x'):
address = int(sys.argv[2], 16)
else:
address = int(sys.argv[2])

if sys.argv[1] == 'w':
if sys.argv[3].startswith('0x'):
data = int(sys.argv[3], 16)
else:
data = int(sys.argv[3])

if data > 0xFFFF:
data = struct.pack('<I', data)
elif data > 0xFF:
data = struct.pack('<H', data)

mic.write(address, data)
else:
print [int(x) for x in mic.read(address, 4)]
except Exception as e:
print(e.message)

if __name__ == '__main__':
main()

FAQ

P1: ¿Cómo obtener la dirección de la fuente de audio desde Mic Array con firmware versión xvsm?

Cuando uses Windows, sigue la guía o usa nuestra herramienta HID.

Los ejemplos de hidapi en Python y C están aquí

P2: ¿Cómo usar audacity para extraer los datos sin procesar de 8 canales en Windows?

Por favor selecciona Windows WASA, aquí está la imagen. Si quieres cambiar la versión del firmware de 0x032 a 0x082, antes de hacerlo, por favor desinstala tu dispositivo en el administrador de dispositivos primero. después de desinstalar, actualiza el firmware vía DFU y reinstala el dispositivo.

P3: ¿Cómo se comunica Mic array con Respeaker Core?

Mic array se comunica con Respeaker Core a través de USB.

P4: ¿Qué significa VAD en ReSpeaker-Microphone-Array-HID-tool?

DatosGrados
1e, 030
e, 1270
d2,0210
96,0150

Visor de Esquemas en Línea

Recursos

Proyecto

Construir Google Assistant en RPi con ReSpeaker Mic Array: ¡Con ReSpeaker Mic Array, ahora podemos construir Google Assistant en Raspberry Pi!

Soporte Técnico y Discusión del Producto

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.

Loading Comments...