Приступая к работе. Аудио возможности ReSpeaker WiFi платы, распознавания голоса и синтеза речи

ReSpeaker является платой для разработки сочетающей в себе Atmel AVR MCU, модуль MediaTek MT7688 WiFi и работающая на OpenWrt, с встроенным микрофоном, аудио — разъемом I / O, для голосового управления  для приложений IoT. Это означает , что вы можете сделать свой собственный Amazon Echo используя плату  и дополнения, использовать его в качестве шлюза для домашней автоматизации с голосовым контролем и многое другое. Плата была запущена на Kickstarter несколько дней назад, и уже подняла $ 100,000 от приблизительно 100 участников, но я получил ранний образец, так что я буду предоставлять более подробную информацию о прошивке, и показывать, как использовать с некоторыми сценариями Python используя Microsoft Bing Speech API.

Нажмите, чтобы увеличить

Вам нужен микро-USB к кабелю USB для подключения к компьютеру (Linux, Windows, Mac OS …), и динамик для подключения к плате. Linux (OpenWrt) загружается в течение нескольких секунд, и как только это будет сделано все RGB LED будут постоянно мигать.

Я использую компьютер под управлением Ubuntu 16.04 и ReSpeaker определяется системой как плата Arduino Leonardo:

[ 5363.542637] usb 3-4.4.4: new full-speed USB device number 7 using ehci-pci
[ 5363.652356] usb 3-4.4.4: New USB device found, idVendor=2341, idProduct=0036
[ 5363.652361] usb 3-4.4.4: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[ 5363.652364] usb 3-4.4.4: Product: Arduino Leonardo
[ 5363.652367] usb 3-4.4.4: Manufacturer: Arduino LLC
[ 5363.697606] cdc_acm 3-4.4.4:1.0: ttyACM0: USB ACM device
[ 5363.697994] usbcore: registered new interface driver cdc_acm
[ 5363.697998] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Это не обязательно, но если вы хотите, вы можете получить доступ к последовательной консоли, с программами Minicom, экран  или HyperTerminal и установить соединение с 57600 8N1 для доступа к командной строке. Вот полный лог загрузки:

DDR Calibration DQS reg = 00008887


U-Boot 1.1.3 (Sep 10 2015 - 05:56:31)

Board: Ralink APSoC DRAM:  128 MB
relocate_code Pointer at: 87f68000
flash manufacture id: ef, device id 40 19
find flash:W25Q256FV
*** Warning - bad CRC, using default environment

============================================
Ralink UBoot Version: 4.3.0.0
-------------------------------------------- C 7628_MP (Port5<->None)
DRAM bus: 6 bit 1024 Mbits DDR, with 16
Tota memory: 12 MBytes
Flsh componen: SPI Flash
Date:Sep 10 2015&nbsp; Time:05:56:31
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256,ys:4,linesz:32 ,otal:32768

##### The CPU freq = 580 MHZ ####
estimate memory size =128 Mbyte
RESET MT728 PHY!!!!!!
GPIOMODE --> 50054404

GPOMODE2 --> 5540551

Please choose the operation:
1: Lystem code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command lne interfac.
7: Load Boo Loader cod then writeto Flash via Seril.
9: Load Boot Loder code thn write to lash via TP.


3: SystemBoot systemcode via Flsh.
## Booing image a bc050000 ..
Image Name:&nbsp;&nbsp; MIPS OpenWrt Linux-3.18.23
Image Type:&nbsp;&nbsp; MIPS Linux Kernel Iage (lzma cmpressed)
Data Size:&nbsp;&nbsp;&nbsp; 1295088 Bytes =&nbsp; 1.2 MB
Load Address: 80000000
Entry Poin 80000000
Verifyng Checksum... OK
Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux at address 0000000) ...
## Giving linux memsize in MB, 128

Starting kernel ...

[&nbsp;&nbsp;&nbsp; 0.000000] Linux version 3.18.23 (pillar@server) (gcc version 48.3 (OpenWrt/Linaro GCC 6
[&nbsp;&nbsp;&nbsp; 0.000000] Bard has DDR
[&nbsp;&nbsp;&nbsp; 0.00000] AnalogPMU set to hw conrol
[&nbsp;&nbsp;&nbsp; 0000000] Digtal PMU setto hw control
[&nbsp;&nbsp; 0.000000]oC Type: ediaTek MT7688 ver:1 eco:2
[&nbsp;&nbsp;&nbsp; 0.000000] bootconsole [early0] enabled
[&nbsp;&nbsp;&nbsp; 0.000000] CPU0 revision s: 00019655(MIPS 24KEc
[&nbsp;&nbsp;&nbsp; 0.000000] MIPS: machine is MediaTek LinkIt Smart 7688
[&nbsp;&nbsp;&nbsp; 0.000000] Determined physical RAM map:
[&nbsp;&nbsp;&nbsp; 0.000000]&nbsp; memory: 08000 00000000 (sable)
[&nbsp;&nbsp;&nbsp; 0.000000] Initrd not found or empty - disabling initrd
[&nbsp;&nbsp;&nbsp; 0.000000] Zone ranges:
[&nbsp;&nbsp;&nbsp; 0.000000]&nbsp;&nbsp; Normal&nbsp;&nbsp; mem 0x00000000-0x07ffffff]
[&nbsp;&nbsp;&nbsp; 0.000000] Movable zone start for each node
[&nbsp;&nbsp;&nbsp; 0.000000] Earl memory nod ranges
[&nbsp;&nbsp;&nbsp; 0.00000]&nbsp;&nbsp; nod&nbsp;&nbsp; 0[mem 0x00000000-0x07fffff]
[&nbsp;&nbsp;&nbsp; .000000] Intmem setup ode 0 [mem x00000000-0x07fffff]
[&nbsp;&nbsp;&nbsp; 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[&nbsp;&nbsp; 0.000000]Primary dat cachB, 4-way, PIPT, no aliases, linesize 32 bytes
[&nbsp;&nbsp;&nbsp; 0.000000] Built 1 zonelists in Zone order, mobility grouping on.&nbsp; Total pages: 3252
[&nbsp;&nbsp;&nbsp; 0.00000] Kernel command line: console=ttyS2,57600 rootfstype=squashfs,jffs2
[&nbsp;&nbsp;&nbsp; 0.000000] PID hash table entries: 512 (order:, 2048 bytes)
[&nbsp;&nbsp;&nbsp; 0.000000] Dentry cache hash table entries: 16384 (order: 4, 6536 bytes)
[&nbsp;&nbsp;&nbsp; 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 btes)
[&nbsp;&nbsp; 0.000000] Writing ErrCtl register=0007b250
[&nbsp;&nbsp;&nbsp; 0.000000] Readback ErrCtl register=0007b250
[&nbsp;&nbsp;&nbsp; 0.000000] Memory: 125868K/131072K available (2875 kernel code, 134K rwdata, 612K rodat)
[&nbsp;&nbsp;&nbsp; 0.000000] SLU: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[&nbsp;&nbsp;&nbsp; 0.000000] NR_IRQS:256
[&nbsp;&nbsp;&nbsp; 0.00000]using register map from evicetree
[&nbsp;&nbsp;&nbsp; 0.000000] CPU Clock: 580MHz
[&nbsp;&nbsp;&nbsp; 0.000000] clocksource_of_init: no matching clocksources found
[&nbsp;&nbsp; 0.000000 Calibratin delay loop.. 385.84 BogoMIPS (lpj=1929216)
[&nbsp;&nbsp;&nbsp; 0.060000] pid_max: default: 32768 mnimum: 301
[&nbsp;&nbsp; .060000] Munt-cache hsh table enries: 1024 order: 0, 496 bytes)
0.07000] Mountpoin-cache hash tableentries: 104 (order: 0 4096 bytes
[&nbsp;&nbsp;&nbsp; 0.080000] pinctrl core: initialized pinctrl susystem
[&nbsp;&nbsp;&nbsp; 0.090000] NET: Registered protocol mily 16
[&nbsp;&nbsp;&nbsp; 0.110000] mt7621_gpio 10000600.gpio: registering 32 gpios
[&nbsp;&nbsp;&nbsp; 0.120000] mt7621_gpio 10000600.gpio: reistering 32 gpios
[&nbsp;&nbsp;&nbsp; 0.130000] mt7621_gpio 10000600.gpioregistering 32 gpios
[&nbsp;&nbsp;&nbsp; 0.140000] i2c-ralink 10000900.i2c: loaded
[&nbsp;&nbsp;&nbsp; 0.140000] Advanced Linux Sound Architecture Driver Initialized.
[&nbsp;&nbsp;&nbsp; 0.150000] Switched to clocksource MIPS
[&nbsp;&nbsp;&nbsp; 0.160000] NET: Registered protocol family 2
[&nbsp;&nbsp;&nbsp; 0.160000] TCP establied hash table entries: 1024 (order: , 4096 byte)
[&nbsp;&nbsp;&nbsp; 0.10000] TCP bnd hash table entries: 1024 (order: 0, 4096 bytes)
[&nbsp;&nbsp;&nbsp; 0.190000] TCP: Hash tables configred (establshed 1024 bind 1024)
[&nbsp;&nbsp;&nbsp; 0.200000] TCP: reno registered
[&nbsp;&nbsp;&nbsp; 0.210000] UDP hash table entries 256 (order 0,96 bytes)
[&nbsp;&nbsp;&nbsp; 0.22000] UDP-Litehash table ntries: 256(order: 0, 096 bytes)
[&nbsp;&nbsp;&nbsp; 0.230000] NET: Registered protocol family 1
[&nbsp;&nbsp;&nbsp; 0.240000] futex hash table entries: 256 (order: -, 3072 byte)
[&nbsp;&nbsp;&nbsp; 0.260000] squashfs: ve4.0 (2009/01/31) Phillip Lougher
[&nbsp;&nbsp;&nbsp; 0.270000] jffs2: version 2.2 (NAND) (SUMARY) (LZMA)(RTIME) (CMODE_PRIORITY) (c) 2001-2.
[&nbsp;&nbsp;&nbsp; 0.300000] msmni has bee set to 245
[&nbsp;&nbsp;&nbsp; 0.300000] io scheduler noop egistered
[&nbsp;&nbsp;&nbsp; 0.310000] io scheduler deadline regist(default)
[&nbsp;&nbsp;&nbsp; 0.320000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[&nbsp;&nbsp;&nbsp; 0.340000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 28, base_baud = 2500000) A
[&nbsp;&nbsp;&nbsp; 0.350000] 10000d00.uart1: ttyS1 at MMIO 0x10000d00 (irq = 29, base_baud = 20000) is a A
[&nbsp;&nbsp;&nbsp; 0.370000] console [ttyS2] disabled
[&nbsp;&nbsp;&nbsp; 0.380000] 10000e00.uart2: ttyS2 a MMIO 0x1000e00 (irq =30, base_bad = 2500000 is a 1650
[&nbsp;&nbsp;&nbsp; 0.40000] consol [ttyS2] enbled
[&nbsp;&nbsp;&nbsp; .400000] console ttyS2 enabled
[&nbsp;&nbsp; 0.410000 bootconsol [early0] dsable&nbsp;&nbsp; 0.410000] bootconsole [early0] disabled
[&nbsp;&nbsp;&nbsp; 0.4303
[&nbsp;&nbsp; 0.450000] m25p80 spi32766.0: found w25q56, expected mx25l25635e
[&nbsp;&nbsp;&nbsp; 0.470000]25p80 spi32766.0: w25q256 (32768 Kbytes)
[&nbsp;&nbsp;&nbsp; 0.48000] m25p80 pi32766.0: sing chunke io
[&nbsp;&nbsp;&nbsp; 0.480000] 4 ofpart partitons found o MTD device spi32766.0
[&nbsp;&nbsp;&nbsp; 0.500000] Creating 4 MTD partitions on "spi32766.0":
[&nbsp;&nbsp;&nbsp; 0.510000] 0x000000000000-000000003000 : "u-boot"
[&nbsp;&nbsp; 00] 000000003000-0x00000004000 : ""
[&nbsp;&nbsp;&nbsp; 0.530000] 0x000000040000-0x000000050000&nbsp; "factory"
[&nbsp;&nbsp;&nbsp; 0.540000] 0x000000050000-0x000002000000 : "firmware"
[&nbsp;&nbsp;&nbsp; 0.610000] 2 uge-fw partitions found on MTD device firmware
[&nbsp;&nbsp;&nbsp; 0.630000] 0x000000050000-0x00000018c330 : "kernel"
[&nbsp;&nbsp;&nbsp; 0.640000] 0x00000018c330-0x000002000000 : "rotfs"
[&nbsp;&nbsp;&nbsp; 0.650000] mtd: device 5 (rootfs) set to be root filesystem
[&nbsp;&nbsp;&nbsp; 0.660000] 1 squashfs-split partitions founn MTD device rootfs
[&nbsp;&nbsp;&nbsp; 0.670000] 0x0000017f00000x00000200000 : "rootf_data"
[&nbsp;&nbsp;&nbsp; 0.700000] ralink_soc_eth 10100000.ethernet eth0: ralink a 0xb0100000 irq 5
[&nbsp;&nbsp;&nbsp; 0.710000] i2c /dev entries driver
[&nbsp;&nbsp;&nbsp; 0.720000] mt7621_dt 10000120watchdog: Iitialized
[&nbsp;&nbsp;&nbsp; 0.730000] Enable Ralink GDMA Contoller Modul
[&nbsp;&nbsp;&nbsp; 0.740000] GDMA IP Version=3
[&nbsp;&nbsp;&nbsp; 0.750000] TCP: cubic regisered
[&nbsp;&nbsp;&nbsp; 0.750000] NE: Registere protocol fmily 17
[&nbsp;&nbsp;&nbsp; 0.760000] bridge: automatic filting via arp/ip/ip6tables has been deprected. Updateyou.
[&nbsp;&nbsp;&nbsp; 0.790000] 8021q: 802.1Q VLAN Support v1.8
[&nbsp;&nbsp;&nbsp; 0.800000] *******Enter codec_wm8960_i2c_probe********
[&nbsp;&nbsp;&nbsp; 0.810000] soc-audo soc-audio ASoC: maine MTK APSoC I2S should use snd_soc_register_car)
[&nbsp;&nbsp;&nbsp; 0.830000] wm8960 0-001a: No platform data supplied
[&nbsp;&nbsp;&nbsp; 0.840000] ****** wm8960_preinit ******
[&nbsp;&nbsp;&nbsp; 1.350000] soc-audio soc-audio: wm8960-hii <-> mt76x-i2s mapping ok
[&nbsp;&nbsp;&nbsp; 1.36000] ALSA devce:
[&nbsp;&nbsp;&nbsp; 1.370000]&nbsp;&nbsp; #0: MTK APSoC IS
[&nbsp;&nbsp;&nbsp; 1.380000] VFS: Mounted root (squashfs filesystem) readonly on devie 31:5.
[&nbsp;&nbsp;&nbsp; 1.400000] Freeing unused kernel memory: 144K (8038c000 - 803b000)
[&nbsp;&nbsp;&nbsp; 2.71000] init: nsole is alive
[&nbsp;&nbsp;&nbsp; 2.72000] init:&nbsp; watchdog -
[&nbsp;&nbsp;&nbsp; 4.690000] usbcore: regisered new interfac drivr usbfs
[&nbsp;&nbsp;&nbsp; 4.700000] usbcre: registeed new inteface driverhub
.71000] usbcore: egistered nw device drver usb
[&nbsp;&nbsp;&nbsp; 4.730000] exFAT: Version 1.2.9
[&nbsp;&nbsp; 4.750000] SCSI subsystem iniialized
[&nbsp;&nbsp;&nbsp; 4.760000] ehci_hcd: US 2.0 'Enhaned' Host Cotrollr (EHCI) Drver
[&nbsp;&nbsp;&nbsp; 4.780000] ehci-platform: EHC generic pltform driver
[&nbsp;&nbsp;&nbsp; 4.990000] phy phy-usbphy.0: remote usb device wakeup disable
[&nbsp;&nbsp;&nbsp; 5.000000] phy phy-usbphy.0: UTMI 16bit 30MHz
[&nbsp;&nbsp;&nbsp; 5.010000] ehclatform 101c0000.ehci: EHCI Host Controller
[&nbsp;&nbsp;&nbsp; 5.020000] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[&nbsp;&nbsp;&nbsp; 5.030000] ehci-platform 101c0000.ehci: irq 26, i mem 0x101c000
[&nbsp;&nbsp;&nbsp; 5.070000] ehci-platform 101c0000.ehci: USB 2.0 started,EHCI 1.00
[&nbsp;&nbsp;&nbsp; 5.08000] hub 1-0:10: USB hub ound
[&nbsp;&nbsp;&nbsp; 5.090000] hub 1-0:1.0: 1 port detected
[&nbsp;&nbsp;&nbsp; 5.100000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[&nbsp;&nbsp; 5.110000] ohci-platform: OHCI generic platform driver
[&nbsp;&nbsp;&nbsp; 5.120000] ohci-platform 101c1000.ohci: Generic Platform OHCI controller
[&nbsp;&nbsp;&nbsp; 5.130000] ohci-platform 101c1000.ohci: new USB bus regstered, assigned bus number 2
[&nbsp;&nbsp;&nbsp; 5.150000] ohci-platform 101c1000.ohci: ir 26, io mem101c1000
[&nbsp;&nbsp;&nbsp; 5.220000] hub 2-0:1.0: USB hub found
[&nbsp;&nbsp;&nbsp; 5.230000] hub 2-0:1.0: 1 port detected
[&nbsp;&nbsp;&nbsp; 5.240000] platform gpio-leds: Driver les-gpio requsts probe deferral
[&nbsp;&nbsp;&nbsp; 5.260000] MTK MSDC dev init.
[&nbsp;&nbsp;&nbsp; 5.260000] SET_IOS: CLK(0kHz), BUS(PSHPULL), BW1), PR(UP), VDD(.30v), TIMIG(LEGACY)SET_)
[&nbsp;&nbsp;&nbsp; 5.30000 mtk-sd: MeiaTek MT657 MSDC Driver
[&nbsp;&nbsp;&nbsp; 5.340000] sdhci: Secure Digital Host Controller Interface driver
[&nbsp;&nbsp;&nbsp; 5.350000] sdhci: Copyright(c Pierre Ossan
[&nbsp;&nbsp;&nbsp; 5] sdhci-pltfm: SDHCI platform nd OF driver helper
[&nbsp;&nbsp;&nbsp; 5.370000] usbcore: registered new interface driver usb-storage
[&nbsp;&nbsp;&nbsp; 5.390000] SET_IOS: CLK(0kHz), BUS(OPENDRAIN), BW(1), PWR(OFF, VDD(1.50v, TIMING(LEGACY)
[&nbsp;&nbsp; 5.400000] latform gpio-le Driver les-gpio requests probe deferral
[&nbsp;&nbsp;&nbsp; 5.720000] init: - preinit -
[&nbsp;&nbsp;&nbsp; 4.680000] usbcore: registered new interface driver usbfs
[&nbsp;&nbsp;&nbsp; 4.690000] usbcore: registered nw intrface drive hub
[&nbsp;&nbsp;&nbsp; 4.700000] usbcore: registered new device driver usb
[&nbsp;&nbsp;&nbsp; 4.720000] exFAT: Version 1.2.9
[&nbsp;&nbsp;&nbsp; 4.740000] SCSI subsystem initialized
[&nbsp;&nbsp;&nbsp; 4.750000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[&nbsp;&nbsp;&nbsp; 4.770000] ehci-platform: EHCI generic platform driver
[ 4.980000] phy phy-usbphy.0: remote usb device wakeup disabled
[&nbsp;&nbsp;&nbsp; 4.990000] phy phy-usbphy.0: UTMI 16bit 0MHz
[&nbsp;&nbsp;&nbsp; 5.000000] ehci-platform 101c0000.ehci: EHCI Host Controller
[&nbsp;&nbsp;&nbsp; 5.010000] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[&nbsp;&nbsp;&nbsp; 5.020000] ci-platform 101c0000.ehci: irq 26, io mem 0x101c0000
[&nbsp;&nbsp;&nbsp; 5.060000] ehci-plaform 101c000.ehci: USB 2.0 started, EHCI 1.00
[&nbsp;&nbsp;&nbsp; 5.070000] hub 1-0:1.0: USB hub found
[ .080000] hub 1-0:1.0: 1 port detected
[&nbsp;&nbsp;&nbsp; 5.090000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[&nbsp;&nbsp;&nbsp; 5.100000] ohci-platform: OHCI generic pltform drive
[&nbsp;&nbsp;&nbsp; 5.110000] ohci-platform 101c1000.ohci: Generic Platform OHCI controller
[&nbsp;&nbsp;&nbsp; 5.1000] ohci-platform 101c1000.ohci: new USB bus registered, assigned bu number 2
[&nbsp;&nbsp;&nbsp; 5.140000] ohci-platform 101c1000.ohci: irq 26, io mem 0x101c1000
[&nbsp;&nbsp;&nbsp; 5.21000] hub 2-0:.0: USB hubfound
[&nbsp;&nbsp;&nbsp; 5.220000] hub 2-0:1.0: 1 port detected
[&nbsp;&nbsp;&nbsp; 5.230000] platform gpioleds: Drive leds-gpio equess probe defrral
[&nbsp;&nbsp;&nbsp; 5.250000] MTK MSDC device init.
[&nbsp;&nbsp;&nbsp; 5.250000] SET_IOS: CLK(0kHz), BUS(PUSHPULL), BW(1), PWR(UP), VDD(3.30v), TIMING(LEGACY)
[&nbsp;&nbsp;&nbsp; 5.320000] mtk-sd: MediaTek MT6575 MSDC Diver
[&nbsp;&nbsp;&nbsp; 5.3000] SET_IOS: CLK(0kHz), BUS(OPENDRAN), BW(1), WR(OFF), VD(1.50v), TIING(LEGACY)
[&nbsp;&nbsp;&nbsp; 5.340000] platform gpio-leds: Driver leds-gpio requests probe deferral
[&nbsp;&nbsp;&nbsp; 5.360000] sr
[&nbsp;&nbsp;&nbsp; 5.370000] sdhci: Copyright(c) Pie Ossman
[&nbsp;&nbsp;&nbsp; 5.380000] sdhci-pltfm: SDHCI platform andr
[&nbsp;&nbsp;&nbsp; 5.390000] usbcore: registered new interface driver usb-storage
[&nbsp;&nbsp;&nbsp; 5.730000] init: - preinit -
[&nbsp;&nbsp;&nbsp; 6.760000] rt305x-esw 10110000.esw: link changed 0x00
[&nbsp;&nbsp;&nbsp; 6.920000] random: procd urandom read wi0 bits of enropy availale
Press the [f] key and hit [enter] to enterfailsafe moe
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug leve


[&nbsp;&nbsp;&nbsp; 9.480000] jffs2: notice: (389) jffs2_build_xattr_subsyste: complete uilding xatr subsy.
[&nbsp;&nbsp;&nbsp; 9.520000] mo_root: switching to jffs2 overlay
[&nbsp;&nbsp;&nbsp; 9.550000] procd: - early -
[&nbsp;&nbsp;&nbsp; 9.560000] procd: - watchdog -

[&nbsp;&nbsp; 10.380000] procd: - ubus -
[&nbsp;&nbsp; 11.400000] procd: - init -
Please press Enter to activte thole.


BusyBox v1.23.2 (2016-07-14 20:06:12 CST) built-in shell (ash)

_______&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ________&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __
|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |.-----.-----.-----.|&nbsp; |&nbsp; |&nbsp; |.----.|&nbsp; |_
_____||&nbsp;&nbsp; __|_____|__|__||________||__|&nbsp; |___|&nbsp;&nbsp; _|
-------------------------------------------------
CHAOS CAMER (Chaos Calmer, r48532)
-----------------------------------------------------
* 1 1/2 ozGin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Shake with lassful
1/4 oz Triple Sec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; of broken ice and pour
* 3/4 oz Lime Juice&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unstrained into a goblet.
* 1 1/2 oz Orange Juice
* 1 tsp. Grenadine Syrup
--------------------------------------------------
root@(noe):/#

При последовательном соединении будет не хватать некоторых символов. Это происходит с двумя компьютерами и различными USB-кабелями. Надеюсь, это либо конкретно проблема с моим образцом, или, эта проблема будет исправлена, когда начнется доставка покровителям Kickstarter [Update: Компания объяснила мне, что это потому, что 32u4 Atmel и Mediatek MT7688 разделяют один и тот же порт USB ].Таким образом, вместо того, чтобы использовать последовательную консоль, я буду использовать SSH вместо того, что означает, что я должен подключиться к точке доступа Wi-Fi ReSpeaker и настроить его.

LinkIt_Smart_Access_Point

ReSpeaker покажет , как LinkIt_Smart_7688_XXXXX, так как модуль WiFi точно такой же , как в LinkIt 7688 IoT и неудивительно , что интерфейс конфигурации точно такой же.

ReSpeaker_WiFi_PasswordСначала установите пароль и войти в систему с этим паролем.

ReSpeaker_Station_Mode_OpenWrt_LUCI

Затем перейдите на вкладку Сеть, выберите режим станции, а также подключиться к точке доступа, введя свой пароль. Нажмите кнопку Настроить. Как вы можете видеть справа выше, вы можете также использовать интерфейс LUCI OpenWRT для настройки сети.

Теперь нужно найти ReSpeaker IP-адрес через свой список Маршрутизатор DHCP-клиента, АРП-сканирования, или другим способом:

sudo apt install arp-scan
sudo arp-scan --localnet

Теперь вы можете подключить к плате через SSH:

ssh root@respeaker_ip_address

и использовать пароль, установленный в веб-интерфейсе.

Теперь давайте проверим некоторую информацию CPU:

cat /proc/cpuinfo 
system type        : MediaTek MT7688 ver:1 eco:2
machine            : MediaTek LinkIt Smart 7688
processor        : 0
cpu model        : MIPS 24KEc V5.5
BogoMIPS        : 385.84
wait instruction    : yes
microsecond timers    : yes
tlb_entries        : 32
extra interrupt vector    : yes
hardware watchpoint    : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa            : mips1 mips2 mips32r1 mips32r2
ASEs implemented    : mips16 dsp
shadow register sets    : 1
kscratch registers    : 0
package            : 0
core            : 0
VCED exceptions        : not available
VCEI exceptions        : not available

У нас есть процессор Mediatek NT7688 MIPS24K как рекламируется, так что давайте проверим несколько более подробно:

root@mylinkit:~# uname -a
Linux mylinkit 3.18.23 #259 Mon Aug 8 17:04:04 CST 2016 mips GNU/Linux
root@mylinkit:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    8.1M    504.0K      7.6M   6% /
/dev/root                22.5M     22.5M         0 100% /rom
tmpfs                    61.5M    260.0K     61.3M   0% /tmp
/dev/mtdblock6            8.1M    504.0K      7.6M   6% /overlay
overlayfs:/overlay        8.1M    504.0K      7.6M   6% /
tmpfs                   512.0K         0    512.0K   0% /dev
root@mylinkit:~# free -m
             total         used         free       shared      buffers
Mem:        126012        36052        89960          260         4660
-/+ buffers:              31392        94620
Swap:            0            0            0

Плата работает на Linux 3.18.23, имеет 7.6Mb объем доступной памяти, а также 128 Мб оперативной памяти в общей сложности.

Я не буду проверять звуковые функции с помощью сценария Python, у меня нет ReSpeaker микрофона и я должен быть довольно близко к микрофону для того , чтобы всё поучилось максимум один метр или объем будет очень низким.

Я начну проверять аудио записи и воспроизведение с любыми требованиями API или доступом в Интернет.
Мы можем записывать звук с частотой дискретизации 16000, 16 бит, шириной 1 канала с помощью следующей команды

arecord -M -f S16_LE -r 16000 -c 1 --buffer-size=204800 -v /tmp/sample.wav

и воспроизвести его с помощью APlay:

aplay -M /tmp/sample.wav --buffer-size=204800 -v

Он работает хорошо.

Теперь мы можем проверить  несколько сценариев Python по преобразованию текста в речь и речи в текст. Вы можете получить сценарии из ReSpeaker GitHub и установить его:

git clone https://github.com/respeaker/microsoft_cognitive_services.git
cd microsoft_cognitive_services
pip install monotonic

Сценарий использует Microsoft Speech API, но в теории вы можете использовать любой другой речевой API. Так какSeeed студия уже сделали всю тяжелую работу, я просто применил ключ Peech API Microsoft для того , чтобы использовать демо:

Это бесплатно для тестирования / оценки, но если вы собираетесь использовать его в коммерческих продуктах, или для собственного дела,то вам нужно приобрести подписку.

Вы найдете три сценария Python в каталоге , а именно: bing_voice.py , bing_stt_with_vad.pytts.py . Посмотрите на BING_KEY внутри каждого скрипта, и вставить свой собственный ключ.

Время, чтобы повеселиться, начинаем с преобразования речи в текст:

python bing_stt_with_vad.py 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
* recording
000000000111000000000000000000000000000000000000000000000000000000000011111+11111111111111100000000-
* done recording
Bing:你好
* recording
000000000000000000000000000000000000000000000000000000000^C0
* done recording

Это довольно медленно потребуется около 15 секунд, а затем есть несколько сообщение об ошибке, прежде чем вы сможете увидеть сообщение «* запись», и вы можете говорить. «Bing:你好».Китайский? Да, в настоящее время по умолчанию язык является китайским, но вы можете отредактировать bing_stt_with_vad.py , и изменить язык замены ZH-CN по EN-US, или другие строки языка:

#        text = bing.recognize(data, language='zh-CN')
        text = bing.recognize(data, language='en-US') 
#        text = bing.recognize(data, language='th-TH')

Английский тоже работает (вроде):

python bing_stt_with_vad.py 
* recording
0000000000000000000000000000000000011111+111111111111111111111111111111111111111111111001111111111111110000011111000111111111100000000-
* done recording
Bing:hello world next software
* recording
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111+11111111111111111111111100001111111111111111111111111100111111111111100000000-
* done recording
Bing:what's the weather like today

В первом предложении, я сказал: «Привет, мир! Добро пожаловать на CNX Software сегодня «, но вышло как» привет мир следующего программного обеспечения «, может быть, из-за моего акцента, но я сомневаюсь в этом …

Тогда я хотел бы попробовать тайский язык, но я получил отказ API просто потому , что количество поддерживаемых языков с помощью Microsoft Speeach API ограничен , теми что показаны в таблице ниже.

language-Country language-Country language-Country language-Country
ar-EG* en-IN fr-FR pt-BR
ca-ES en-NZ it-IT pt-PT
da-DK en-US ja-JP ru-RU
de-DE es-ES ko-KR sv-SE
en-AU es-MX nb-NO zh-CN
en-CA fi-FI nl-NL zh-HK
en-GB fr-CA pl-PL zh-TW

 

Если ваш язык не перечислен здесь, то вы могли бы воспользоваться Google Speech API вместо этого Seeed Studio уже написали совместимые сценарии ReSpeaker для тех кто участвовал в сборе средств.

Так что теперь вы знаете , как конвертировать ваш голос в текст, и вы можете использовать этот текст для веб — поиска, или переключения GPIOs, но вы также можете получить аудио ответ на ваши действия, и tts.py сценарий очень прост в использовании:

python tts.py "Hello World! Welcome to CNX Software"

Не особо реалистично, но по крайней мере я мог понять женский голос в динамиках. Просматривая сценарии я не видел каких — либо настроек языка, поэтому я предполагаю , что API будет автоматически определять язык. В конце концов я обнаружил , что вы можете изменить язык в bing_voice.py сценарии:

#def synthesize(self, text, language="en-US", gender="Female"):             
def synthesize(self, text, language="fr-FR", gender="Male"):

Я заменил женский голос США, но французский мужской голос:

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments