Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Utilisation d'un micro array #103

Closed
LengZai opened this Issue Aug 28, 2016 · 185 comments

Comments

Projects
None yet
@LengZai
Copy link

LengZai commented Aug 28, 2016

Hi Alex,

Just found this on Kickstarter....
Interesting regarding the mic array...

https://www.kickstarter.com/projects/seeed/respeaker-an-open-modular-voice-interface-to-hack?ref=newest

@diyfr

This comment has been minimized.

Copy link

diyfr commented Aug 28, 2016

I contacted the DSP manufacturer XMOS but I have no answer. ReSpeaker don't sell microphone array module only.

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Aug 28, 2016

Looks like this in fact... https://creator.matrix.one/#/index

What do you think @diyfr

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Aug 28, 2016

J'ai backé le projet pour voir ce que ça va donner.

@LengZai Intéressant ton lien mais, super cher par contre ...

Vous connaissez pas d'autres array micro ? Car j'aimerai vraiment me faire un amazon echo like mais avec le micro à 10€ je dois être a maximum 1m de distance et il n'y a pas de reduction de bruit.

Faut peut être même trouver des drivers pour travailler sur la réduction de bruit, ça doit exister. Respeak le propose et il est en plus open source/hardware ce qui va nous être utile.

Qu'en pensez-vous ?

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Aug 28, 2016

Pour Respeak il me semble que ca soit open-source

J'ai pris un Matrix Creator. J'attends de le recevoir

C'est un peu cher mais ca fait plus qu un micro array.. bcp de possibilite.. avec reconnaissance facial, gest, etc...
C'est a peu pres ca que tu veux faire @francoismartin
Alexa c'est qu'en anglais pour le moment
http://www.instructables.com/id/Build-a-DIY-Amazons-Alexa-With-a-Raspberry-Pi-and-/?ALLSTEPS

@physicien

This comment has been minimized.

Copy link

physicien commented Aug 28, 2016

@francoismartin Si tu veux un micro avec le noise reduction et le echo cancellation, le tout build in 100% hardware et ne nécessitant aucun driver, je te conseille fortement le CM-1000USB. C'est le 3e micro que j'ai essayé, et je suis bien content d'enfin avoir trouvé un micro qui me comprend à distance même quand il y a des travaux au dessus de ma tête 😄

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Aug 28, 2016

@LengZai
Quand je parlais d'amazon echo, je voulais dire dans le sens reconnaissance vocale et qualité. Car là j'avais acheté le micro usb Trixes, ça fonctionne mais c'est pas super performant.

@physicien
Merci ;)
Comment tu as fais pour acheter sur amazon.com en étant en France ?

@physicien

This comment has been minimized.

Copy link

physicien commented Aug 28, 2016

@francoismartin Je l'ai acheté sur amazon.ca en étant au Québec 🚀
C'est un micro assez facile à trouver sur Ebay aussi.

@diyfr

This comment has been minimized.

Copy link

diyfr commented Aug 28, 2016

@LengZai la platine de microphone array du ReSpeaker. C'est par ici Xmos
Mais ils ne commercialisent que le développeur kit à 1500$ de mémoire

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Aug 28, 2016

@physicien
Merci, je go acheter sur ebay, étonnant qu'amazon france ne le vend pas.

@diyfr
Très belle découverte, comment as-tu trouvé ça par indiscrétion ?
Si Xmos le fait, ils ne doivent pas être les seuls.

@diyfr

This comment has been minimized.

Copy link

diyfr commented Aug 28, 2016

@francoismartin le produit est cité sur la page kickstarter de ReSpeaker. Et c'est le processeur DSP conçu par Xmos
Sinon après faudrait monter une platine avec des composants TI. Ils ont aussi un DSP. mais ça dépasse mes compétences.

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Aug 28, 2016

Merci @diyfr
Mais j'ai déjà commandé le Matrix Creator qui me parait mieux du coup (plus de sensors, zwave, zigbee, etc) et moins cher que le Xmos. Mais bon, faut bien avouer que le Xmos parait parfait niveau sonore.
J'attends de le recevoir et je posterai les résultats avec Jarvis (en espérant que cela fonctionne)

@diyfr

This comment has been minimized.

Copy link

diyfr commented Aug 29, 2016

@LengZai c'est le prix de la plateforme de dev. J'ai regardé effectivement le Matrix créatif est pas mal. Mais trop cher pour moi.
Merci @physicien pour l'info je me le note quelque part.

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Aug 29, 2016

@LengZai
Je serai vraiment curieux d'avoir ton retour d’expérience et avis sur matrix creator.

@diyfr
Que veux-tu dire par Sinon après faudrait monter une platine avec des composants TI ?

Merci

@diyfr

This comment has been minimized.

Copy link

diyfr commented Aug 30, 2016

@francoismartin c'est la solution utilisée par Amazon écho.
Le DSP pour les microphone array est un Texas Instruments. (Lien vers Fixit)[https://fr.ifixit.com/Teardown/Amazon+Echo+Teardown/33953]
Aucune idée des coûts.

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Aug 31, 2016

@diyfr
Donc si je comprend bien tout le cerclage, avec le PCB, les micro, la technologies de captation et de réduction d'echo est directement développé par TI ?

@diyfr

This comment has been minimized.

Copy link

diyfr commented Sep 1, 2016

@francoismartin à priori oui c'est ce que semble décrire Fixit et c'est ce que l'on voit sur la photo.
Mais j'ai regardé un peu la Doc et pour les non initiés c'est un peu inabordable...

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Sep 1, 2016

@LengZai Merci je vais regarder aussi par curiosité ;)
Du coup si TI fait tout quel est l'intérêt pour ReSpeaker de passer par Xmos ... ?

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Sep 1, 2016

@francoismartin oui bonne remarque lol.
Bah finalement j'ai pris le matrix creator car la communauté me parait plus important.. mais respeaker reste à suivre..
Disons que pour le meme prix environ, le matrix fait plus de choses.. zwave,zigbee,accelerometre, camera,nfc,rfid,...
Language de dev principal: javascript et ils ont prevu du c++ et python.

Malheureusement, j'ai du payer la douane de 42e.. abusé pour un board de développement (cout total avec conversion usd/eur.. 165 eur environ)... Enfin bon.. j'espere que j'aurai un bon retour d'investissement.. je le recois d'apres DHL, Vendredi soir (il est en France actuellement apres l'avoir commander y a 3jours)... Donc je suppose samedi au plus tard.

Avec le prix du pi3, ca fait presque 200e soit plus cher qu un Amazon Echo ou Google Home mais le Matrix Creator a beaucoup plus de possibilités et surtout customizable... Je ferai des tests ce week-end (si je le recois bien a l'heure) et vous tiendrai au courant.

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Sep 1, 2016

DHL vient de m'appeler... Colis reçu today mais je suis au taff là donc je ne peux pas encore voir la bête.

Avez-vous entendu parler de ça.. Y'a pas beaucoup d'info sur le net.. société française il semblerait...

http://www.getfili.com/
https://www.facebook.com/getfili

Pas très bien référencé

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Sep 1, 2016

@LengZai
Il doit bien avoir un avantage de passer par Xmos sinon, il ne le ferait pas :D
Vraiment curieux d'avoir des news sur l'utilisation, la facilité de Matrix creator et sur leur store de fonctionnalité.

Pour Fili, oui j'en est entendu parlé autour de moi, un ami d'un ami a été invité a une démonstration dans un de leur showroom et il m'a dit que c'était concluant et très prometteur. C'est une startup française, ils ne vendent pas encore le produit sur le mass market mais, souhaite avoir un nombre limité d'early adopter pour créer le produit avec eux et répondre a de vrai besoin ( si j'ai bien compris ;) ).
Car leur but est de faire avancer le produit avec leur communauté et ne pas promettre 30 000 fonctionnalités avec un délai très cours de livraison qui n’est jamais respectée comme régulièrement fait sur les campagnes de crowdfunding.

Du coup, je trouve que leur approche est pas mal, et l'ami de mon ami aussi, car il l'a acheté et fait partie de ces "créateurs ».

@alexylem

This comment has been minimized.

Copy link
Owner

alexylem commented Sep 1, 2016

Discussion passionnante, je suis vos échanges avec beaucoup d'intérêt !

@diyfr

This comment has been minimized.

Copy link

diyfr commented Sep 1, 2016

@alexylem j'ai une discussion similaire sur Google plus j'espère que ce ne sont pas les mêmes personnes sinon on va se répéter à chaque fois :)

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Sep 1, 2016

Ok mon 1er retour rapide sur le sujet..
On s'en franchement que c'est le début..
Tu installes comme indiquer sur leur site.. ca compile... quelques demos sont fournis.. code source (98% codes sources en c++, ca va, c'est lisible) et apres c'est tout
Bon je rappelle que c' est la version creator donc fallait pas non plus s'attendre a du plug n play pour utiliser tous les capteurs avec n'importe quel programme.

Donc forcement jarvis ne marche pas avec car le micro n' est pas reconnu par le alsamixer (chose que j' avais cru avant d'acheter). Apres je ne connais pas encore bien le Rpi mais d'apres ce que j'ai pu lire sur le net... avoir une sorte de carte audio a travers les GPIO.. c'est peu courant..

Enfin bref.. je ferai plus de tests ce week-end.

Grace au demo, j'ai testé le micro a travers le binaire.. les leds s'allument pendant 10sec le temps de l' enregistrement, et ca m'enregistre 8 fichiers au format raw.
petite conversion avec sox
sox -b 16 -c 1 -r 16000 -e signed-integer mic_16000_s16le_channel_0.raw 000.wav
ca me donne un fichier de 313Ko
Ca bug a la fin de l enregistrement (mais les fichiers sont propres).. un prob de liberation de memoire mais j'ai quand meme mes 8 fichiers (un par micro donc)

~/matrix/matrix-creator-hal/build/demos $ ./micarray_recorder
*** Error in `./micarray_recorder': free(): invalid pointer: 0x76d3a4f8 ***
Aborted

Et je dois bien avouer que le son est très propre et très peu de bruit/souffle (difficle de l entendre en tout cas)
Apres niveau volume du micro je n'ai pas trop regardé.. j'ai laissé la conf par defaut du prog en c++
la portée a l air bonne mais je n'ai pas pu tester bien loin... (le neveu dormait -_-''.. il repart demain donc je serai plus tranquille ce week-end)

j'ai vu que sur leur site.. il y a quelque code source en js pour faire des demo en js.. mais pas eu le temps de regarder et tester en details.

Donc pour le moment encore un peu tot a dire..
J' avais lu sur des sites GPS, BT mais il semblerait que non..
J'attends donc avec impatience les acces par js et python en tout cas

A titre d'info.. voici le code source de leur prog pour tester les 8 micro...

`/*

  • Copyright 2016
  • All rights reserved.
    */

#include <wiringPi.h>

#include
#include
#include
#include

#include "../cpp/driver/everloop_image.h"
#include "../cpp/driver/everloop.h"
#include "../cpp/driver/microphone_array.h"
#include "../cpp/driver/wishbone_bus.h"

namespace hal = matrix_hal;

int main() {
hal::WishboneBus* bus = new hal::WishboneBus();
bus->SpiInit();

hal::MicrophoneArray mics;
mics.Setup(bus);

hal::Everloop everloop;
everloop.Setup(bus);

hal::EverloopImage image1d;

for (auto& led : image1d.leds) led.red = 10;

everloop.Write(&image1d);

uint16_t seconds_to_record = 10;

int16_t buffer[mics.Channels()][seconds_to_record * mics.SamplingRate()];

uint32_t step = 0;
while (true) {
mics.Read(); /* Reading 8-mics buffer from de FPGA */

for (uint32_t s = 0; s < mics.NumberOfSamples(); s++) {
  for (uint16_t c = 0; c < mics.Channels(); c++) { /* mics.Channels()=8 */
    buffer[c][step] = mics.At(s, c);
  }
  step++;
}
if (step == seconds_to_record * mics.SamplingRate()) break;

}

for (uint16_t c = 0; c < mics.Channels(); c++) {
std::string filename = "mic_" + std::to_string(mics.SamplingRate()) +
"s16le_channel" + std::to_string(c) + ".raw";
std::ofstream os(filename, std::ofstream::binary);
os.write((const char*)buffer[c],
seconds_to_record * mics.SamplingRate() * sizeof(int16_t));

os.close();

}

for (auto& led : image1d.leds) {
led.red = 0;
led.green = 10;
}
everloop.Write(&image1d);

return 0;
}
`

quelques images rapide:
image

L'impression sur la boite est vraiment de mauvaise qualite
image

@diyfr

This comment has been minimized.

Copy link

diyfr commented Sep 2, 2016

Merci pour cette restitution.
Du coup pas de dsp si 8 pistes audio ...

@francoismartin

This comment has been minimized.

Copy link
Contributor

francoismartin commented Sep 2, 2016

@diyfr
Je suis curieux de suivre la discussion sur google plus, peux-tu me donner le lien ;) Merci
Et pourquoi pas de DSP si 8 piste audio ? C'est limité à 6 pistes le DSP ?

@LengZai
Merci beaucoup pour ton retour rapide.
Et leur communauté sur leur forum, aucun ne parle pour la reconnaissance du micro sur alsa, c'est étonnant.

@diyfr

This comment has been minimized.

Copy link

diyfr commented Sep 2, 2016

@francoismartin il y a des communautés qui traitent de ce sujet (domotique, S.a.r.a.h)
Mais le post ici évoqué est celui-ci

@LengZai

This comment has been minimized.

Copy link
Author

LengZai commented Sep 2, 2016

Je me suis inscris à leur communauté ce matin..
Y'a des "anglais" qui cherchent à faire la meme chose que jarvis.sh donc j'ai fais un peu de pub :-)

J'ai posté ce matin...
http://community.matrix.one/t/doing-on-board-word-phrase-detection/37/7
Pour augmenter la communauté, faut passer en anglais
#107
:-P

C' est pour cela que je suis sceptique pour Fili, mon ami a fait une demande, il va avoir un appel avec eux pendant 15min avant de "se voir physiquement".
Il devrait faire un site au moins en anglais pour avoir plus de beta testeur... enfin si j' etais eux.. je miserai le potentiel de l'international

@diyfr, @francoismartin j'ai regardé sur le net mais pas trop d'info au sujet du DSP.. J'ai aussi du mal a comprendre ce que ca peut changer et si c'est materiel ou/et logiciel?
Voici le composant micro du Matrix Creator:
https://github.com/matrix-io/matrix-creator-quickstart/wiki/Data-Sheets
MICS: MEMS MP34DB02

@diyfr

This comment has been minimized.

Copy link

diyfr commented Sep 2, 2016

Le DSP va traiter les flux (8) des différents microphones pour te restituer un seul flux audio nettoyé des éléments parasites et echo en se concentrant sur le spectre de la voix humaine. Cela peut être fait programmatiquement parlant mais la ou c'est le plus efficace c'est un microprocesseur dédié.

@Smanar

This comment has been minimized.

Copy link

Smanar commented Sep 8, 2016

Ha ?
Si c'est en cpp, moi ca m'interesse.

Par contre pas besoin nécessairement de 8 flux pour traiter l'audio, je vois pas ce qui empeche de traiter uniquement 2 micros. Cela depend de l’algorithme utilise pr traiter le son.

Pour la reconnaissance offline ils tournent avec pocketsphinx, pour l'avoir teste, c'est pas fameux, donc meme si le hardware est plus puissant, ca ne vaudra jamais les versions online.

En fait j'ai beau chercher des infos sur leur projet, je ne vois pas le "plus" qu'ils ont face aux autres projets comme mycroft, alexa, ou simplement Jarvis qui lui est a 100% modifiable a convenance et a l'infini.
Tu prend Jarvis, tu le couple a un systeme domotique qui gere deja zwave par exemple (comme Domoticz) une meilleur microphone et tu as deja mieux que leur projet.

Ceci dis moi perso j'attend que alexa debarque en francais. Le seul truc qui pourrais faire sortir un projet du lot, c'est le traitement de la reconnaissance vocale, et pour moi c'est le "projet" que je surveille le plus (meme si c'est plus un service qui va arriver de toute facon qu'un reel projet).

Pour le MATRIX Creator @LengZai , si tu avances dans les tests ca m'interesse par contre.

Edit:
je viens de voir un exemple de "Face Tracking" avec une "interface camera" par contre je ne vois pas de webcam sur la video, ni d'info comme quoi il y aurait une cam sur la MATRIX. Des infos ?

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 3, 2018

@mikevador02
Si tu fais un : arecord --device=mic_channel1 -r 16000 -c 1 -f S16_LE test.wav
Puis un aplay test.wav (ou récupère le fichier) tu entend bien ?
moi c'est très faible je pense que le problème n'est pas dans Jarvis

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 3, 2018

de mon côté j'ai tout installé malos, matrixos et hal, dans la demo tout fonctionne bien, en faisant la modif à channel_1 ça ne change rien

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 3, 2018

@mikevador02 comment as-tu fais pour le faire fonctionner dans jarvis sans modifier le gain

@shahwahed

This comment has been minimized.

Copy link

shahwahed commented Feb 10, 2018

Moi j'utilise le micro de la PS3, réducteur de bruit intégré ça marche super, trouvé à 1,99€ en occasion

@diyfr

This comment has been minimized.

Copy link

diyfr commented Feb 10, 2018

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 10, 2018

@Knoppix1 oui j'ai fait les tests avec arecord et aplay, je m'entendais bien , sauf de loin ou il y a de la réverbération et une atténuation due a la distance (si je suis à 7 mètres), mais je suppose qu'il y a moyen de paramétrer le dsp du matrix pour augmenter ce gain au niveau hardware... et je suppose que jarvis n'est pas sensé effectivement attaquer le hardware du matrix, cependant une personne semblait avoir trouvé les paramètres dans ce fil d'actu mais qui date d'un certain temps.

Sinon oui on parle alors d'utiliser un simple micro usb haut gain pour jarvis (mais ici le but est de pouvoir exploiter un array de micro qui peux atténuer la réverbération, optimiser le gain etc...)

@nicoxygen j'ai laissé les paramètres par défaut au début, ensuite j'ai testé avec un gain à mes souvenirs autour de sensitivity : 5 et 9 cela fonctionnait mais 1m 2m max, ensuite si je poussait plus je n'avais plus rien (a mon avis saturation du gain), je doit le ressortir

Je vais m'y remettre dès que je peux (là il est rangé aux archives :o) )

@shahwahed

This comment has been minimized.

Copy link

shahwahed commented Feb 11, 2018

c'est ce micro la que d'ont je parle :
https://fr.wikipedia.org/wiki/PlayStation_Eye

acheté chez easycash 1,99€ sur place alors que sur leur site web il est indiqué a 4,99€

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 17, 2018

@mikevador02 J'ai ouvert un post. sur le forum de Matrix Creator effectivement ils avaient un problème d'enregistrement faible c'est maintenant corrigé. .

Du coup j'attaque l'installation de Jarvis avec une Bose en Bluetooth et pulseaudio etc mais je bloque ...
J'arrive bien a lire des sons enregistré mais quand j'install Jarvis au moment de l'enregistrement il n'y arrive pas j'ai l'impression que c'est un pb de droit (sudo etc). Je suis en Rasbian 9
J'ai donc laissé tombé le Bluetooth et remis en Jack classique a la il faut obligatoirement que je lance un aply en sudo pour entendre quelque chose de mon enregistrement. Et a l’installation de Jarvis impossible de lire le son de test et impossible d'enregistrer aussi.

J'ai complété mon ~/.asoundrc avec celui du /etc/asound.conf idem même pb je comprends que dalle avec ces droits vu qu'on peux pas lancer Jarvis en root...

Je crois que je vais repasser sur Rasbian 8 ...

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 17, 2018

@Knoppix1
Super j'ai ressorti ma config aussi cette semaine, mais pas été loin. les démos ne fonctionnent pas chez sur la version de raspbian que j'ai.

Je refait une install en Jessie (8) je sais que la stretch (9) ne fonctionnait pas avec matrix au 11/2017 (même si Matrix avait fait un fix et m'avais donné une aide) mais en tout cas pas avec un arcord sur cette version de linux à cette époque.

Je te propose d'essayé en version (8).

J'avais aussi testé en Btooth avec un Samsung ça fonctionnait bien mais à mes souvenirs cela nécessitait l'installation d'un module qui pouvait entrer en conflit avec le service de gestion du son classique, j'ai donc aussi opté pour mes tests de repasser sur un vieux baffle avec un pcb amplis audio :).

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 17, 2018

Bon j'ai réussi, je donne ma procédure pour ceux que ça intéresserai avec un matrix voice(utilisateur par défaut Pi)

  • J'avais fait une erreur j'avais lancé le clone git en sudo du coup il m'avait appliqué les droit root...
  • J'ai désinstallé pulseaudio pour le moment.
  • J'ai passé le dossier /tmp dans le group pi
  • J'ai mis le compte root dans le group pi
  • J'ai copié mon /etc/asound.conf dans le ~/.asoundrc de l'user PI

Et tout fonctionne parfaitement.
Et en bonus voici mon ~/.asoundrc qui est donc identique a mon /etc/asound.conf 👍 :


pcm.sc {
    type hw
    card 1
}

pcm.mic_channel0 {
  type file
  file "/tmp/matrix_micarray_channel_0"
  infile "/tmp/matrix_micarray_channel_0"
  format "raw"
  slave {
    pcm sc
  }
}


pcm.mic_channel1 {
  type file
  file "/tmp/matrix_micarray_channel_1"
  infile "/tmp/matrix_micarray_channel_1"
  format "raw"
  slave {
    pcm sc
  }
}


pcm.mic_channel2 {
  type file
  file "/tmp/matrix_micarray_channel_2"
  infile "/tmp/matrix_micarray_channel_2"
  format "raw"
  slave {
    pcm sc
  }
}


pcm.mic_channel3 {
  type file
  file "/tmp/matrix_micarray_channel_3"
  infile "/tmp/matrix_micarray_channel_3"
  format "raw"
  slave {
    pcm sc
  }
}

pcm.mic_channel4 {
  type file
  file "/tmp/matrix_micarray_channel_4"
  infile "/tmp/matrix_micarray_channel_4"
  format "raw"
  slave {
    pcm sc
  }
}


pcm.mic_channel5 {
  type file
  file "/tmp/matrix_micarray_channel_5"
  infile "/tmp/matrix_micarray_channel_5"
  format "raw"
  slave {
    pcm sc
  }
}

pcm.mic_channel6 {
  type file
  file "/tmp/matrix_micarray_channel_6"
  infile "/tmp/matrix_micarray_channel_6"
  format "raw"
  slave {
    pcm sc
  }
}

pcm.mic_channel7 {
  type file
  file "/tmp/matrix_micarray_channel_7"
  infile "/tmp/matrix_micarray_channel_7"
  format "raw"
  slave {
    pcm sc
  }
}

pcm.mic_channel8 {
  type file
  file "/tmp/matrix_micarray_channel_8"
  infile "/tmp/matrix_micarray_channel_8"
  format "raw"
  slave {
    pcm sc
  }
}

pcm.!default
{
  type asym
  playback.pcm {
    type hw
    card 0
    device 1
  }
  capture.pcm {
    type file
    file "/tmp/matrix_micarray_channel_1"
    infile "/tmp/matrix_micarray_channel_1"
    format "raw"
    slave {
        pcm sc
    }
  }
}

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 17, 2018

Salut,

Un grand Merci @Knoppix1 une maj du linux/matrix init, et vérification je suis en matrix-init 0.4.4 un reboot et hop :o)

Les test arecord / aplay donne presque à 5m comme si j'était collé au micro et sans trop de bruit.

C'est super ça marche de loin avec le mot clé pour snowboy sous jarvis.

Par contre une fois le mot clé reconnu, il n'arrive pas à traiter les mots à décoder ensuite via chez moi le moteur bing (sur bing/azure/metriques, je n'ai dans les logs aucuns envoi de demande de décodage de voix en texte (en erreur ou autre...) ).

Voici le log:
mike: (listening...)
DEBUG: start_speaking hook ""
utils/timeout.sh 5 rec -V1 -q -r 16000 -c 1 -b 16 -e signed-integer --endian little /dev/shm/jarvis-record.wav gain 0 silence 1 0.1 1% 1 0.5 1% pad 0.5 0.5 trim 0 5
====>gain 0, 5, 8 , 15, 20 , 25 (toujours le même message)
DEBUG: speech duration was 50 (10 = 1 sec)
WARNING: too long for a command (max 4 secs), ignoring...
HELP: try in order the following options

  1. wait longer between voice commands
  2. reduce ambiant background noise
  3. decrease mic sensitivity in Settings > Audio
  4. increase Min Silence Level to Stop

On dirai que en fait jarvis bloque avant de traiter un envoi comme si il était saturé en bruit.
(mais alors étrange que snowboy lui arrive à décoder mon mot clé dicté).

J'ai testé avec les gain (0, 5, 8, 15, 18, 20 , 25) rien ne change. en parlant près du micro ou loin avec le gain 0 à chaque fois il décode bien le mot clé via snowboy et ensuite rien.

J'utilise bien le moteur sox pour bing.

Merci pour votre aide.

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 18, 2018

J'ai exactement le même soucis snowboy jusqu'à 7-10m sans crier et ensuite rien même à 1 mètre
il faut faire au moins 10 essai avant qu'une phrase ne sorte, par contre elles sont systématiquement bien comprises et non tronqué.

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 18, 2018

Ok, en fait il faut jouer avec les min noise perc et min silence level , ça aide j'ai monté a plus de 10% avec un gain de 18 et ça va mieux, mais pas encore top.
Il faut beaucoup répéter, en mode debug parfois chez moi je constate qu'il tronque la fin de mon audio.
Parfois au moment de faire l'écoute il considère le bruit d'attente d'écoute comme un enregistrement (beaucoup de réverbération chez moi) j'ai tenté de mettre un sleep sur le rec (sox) je vais voir de plutôt ajouter un blanc a la fin des sons.

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 21, 2018

Exactement pareil ! et je crois savoir pourquoi mais là il faudrait que @alexylem nous confirme/affirme un truc. Car effectivement c'est un pb de bruit il ne différencie pas quand il faut s’arrêter ou écouter.

J'ai effectué un auto level qui a un moment m'a retourné des min noise etc vers les 4% avec un gain de 5 et c’était parfait de loin. J'en ai ré-effectué un et depuis impossible de trouver la bonne valeur.

J'ai remarqué que lors de l'autolevel le record se fait à 48000 hors si on suit le tableau que donne le gars dans mon post sur le forum de Martix Creator il faudrait être a un gain de 8.
ET si on fait un arecord --device=mic_channel1 -r 48000 -c 1 -f S16_LE test.wav
alors là c'est métallique a souhait et pratiquement inaudible.
Donc j'ai l'impression que l'autolevel capte ce signale merdique car il est à 48000. Y a t'il une raison à sa ou est-ce qu'on pourrait le passer a 16000 pour tester ?

Merci d'avance à @alexylem pour sa réponse. Car une fois tous les pb réglé je pense qu'on va avoir un MicArray de fou ;)... j'ai hâte !!!

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 21, 2018

De mon côté le gain à 2à4 donne super, si je pousse plus là snowboy n'aime pas pour le hotword. ensuite c'est la cata.

Oui je cherche encore de mon côté je passe quelques soirées la dessus pour le moment,
je m'amuse a modifier aussi manuellement en commande
rec -V1 -q -r 16000 -c 1 -b 16 -e signed-integer --endian little /dev/shm/jarvis-record.wav gain 8 silence 1 0.1 35% 1 0.5 5% pad 0.5 0.5 trim 0 5

puis aplay ... ce qui est dis est ok mais parfois le découpage de la voix et du silence sont pas parfait et le trigger ne fonctionne pas aussi parfois il faut s'amuser à trouver la bonne valeur.

J'ai re testé sur un autre projet (lisabox) et la super ça réagis très bien, presque en parlant tout bas :o) les voisins se demandent pourquoi j’arrête pas de dire le même mot plus de 1000 fois à un bout de PCB rond :o) , (il utilise sonus pour le hotword, et l'api google) , mais le programme est pas encore aussi complet (niveau plugins) que jarvis.

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 21, 2018

on est pas loin ça c'est sûre, je suis au même point

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 22, 2018

faudra qu'on compare les réglages audio une fois l'autolevel rectifié

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 25, 2018

@nicoxygen et @mikevador02 J'ai ouvert un ticket pour ça.

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 25, 2018

Bonjour,

@Knoppix1 et @nicoxygen

Voilà je me suis dit que j'allais quand même remonter un peu dans le code. Impatient d'avoir enfin une solution efficace :)

En fait lors de la vérification de la longueur du fichier la commande qui se trouve dans /jarvis/utils/audio.sh retourne une valeur qui n'est pas la bonne.

Chez moi il semble que lorsqu'il écoute et enregistre il fait un fichier au moins de 5 secondes.
Lors du test de la commande qui se trouve ici:
duration=$(sox $audiofile -n stat 2>&1 | sed -n 's#^Length[^0-9]([0-9]).([0-9])*$#\1\2#p')
il retourne au lieu de 5 une valeur de 50 qu'il extrait dans les metas du fichier audio (lenght 5.0000).
La limite indiquée est de 40. (que j'ai augmentée pour tester) et là ça passe super.

J'ai voulu chercher plus loin j'ai retiré un point à la fin de la commande entre le \1.\2 (ligne 'duration=') chez moi ligne 133
duration=$(sox $audiofile -n stat 2>&1 | sed -n 's#^Length[^0-9]([0-9]).([0-9])*$#\1.\2#p')
Là il considère mon 5 secondes en float 5.0 et plus en 50.

Il y a beaucoup d'autres lignes avec la même commande dont je n'ai pas fait cette modif pour le moment.

Voilà je sais pas si c'est valable comme solution pour les autres cas d'utilisation mais je suppose que c'est un bug du à une mise à jour où autre qui fait que cette commande ne retourne pas la bonne valeur qui est sensée être des secondes et non le multiple de 10.

J'ai oublié de dire que j'ai un petit message : utils/audio.sh: line 135: [: 5.0: integer expression expected
Il faudra adapter le retour de duration en integer :)
J'ai ré adapté
duration=$(sox $audiofile -n stat 2>&1 | sed -n 's#^Length[^0-9]([0-9]).([0-9])*$#\1#p')
en retirant le 2ieme paramètre pour éviter ce message.

Par contre j'ai l'impression qu'il envoi tout de même chaque fois l'audio même si on ne dis rien après avoir passé le magic_word.
Peut être la reverb du son qui dis qu'il est en écoute qui reviens dans l'enregistrement je pense avoir vu un sleep 1 pour ce problème je verrai plutard.

Encore merci @Knoppix1 pour la résolution du gain.

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 25, 2018

@mikevador02
Ok alors je crois tenir le bon bout !

J'avais vu ce script mais pas eu le temps de m'y plonger
Du coup quand tu faisait les test avec rec tu spécifié rec -r 16000 .... sauf que dans les 1ere ligne du fichier (enfin du mien) c'est rec sans option de fréquence du coup il enregistre par defaut à 48000 et sur le stéréo.
Fait un test con : rec test.wav gain 5
Puis un : aply test.wav
Est-ce que ton enregistrement est correct ?
Perso moi non c'est métallique et rapide si je force à -r 16k -c 1 la c'est bon !
Du coup j'ai modifier la ligne (23) par : rec -r 16k -c 1 $audiofile gain $gain trim 0.5 $duration # skip first 0.5 secs due to mic activation noise

Et mon autolevel passe maintenant bien
Bon ensuite j'ai du mettre un fort gain pour qu'il passe l'autolevel puis j'ai du abaissé les seuils de pourcentage à 1 sauf pour min noise que j'ai mis à 7 car sinon il me démarrait une autodetection quand je ne disait rien. Donc ça c'est pour la détection de loin

Et maintenant je crois que j'en arrive a ton pb c'est que des fois suivant si je parle plus fort ou pas il ne me finit pas les phrases

@mikevador02

This comment has been minimized.

Copy link

mikevador02 commented Feb 25, 2018

Oui effectivement il enregistre par défaut en 48K avec le simple test que tu dis.
Pour l'auto level, j'ai adapté ma ligne 23 aussi.

J'ai fait quelques tests pour l'instant ça donne super au niveau de la reconnaissance et d'assez loin, j'ai quand même poussé mon gain a 14/18 pour que ça marche a 5m.

En fait pour les phrases il enregistre d'office apparemment donc tu dois parler direct après le bruit sinon il va pas prendre en compte toute ta phrase. Probablement que la sensibilité est trop grande et donc il faut trouver d'autres valeurs pour que le trigger du rec démarre ou pas.

Par contre le traitement est quand même lent ça sera un autre sujet à voir

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 26, 2018

effectivement en modifiant la ligne 23 le magic_word est plus sensible et affiné mais en troubleshooting, je trouve qu'en mode normal ou en mode service la latence se rallonge, et aussi bon ça a été cité plus haut le délai entre la demande et la réponse est relativement long ( raspberry pi 3 + jeedom )

@shahwahed

This comment has been minimized.

Copy link

shahwahed commented Feb 26, 2018

j'ai fouillé un peu hier, au sujet du micro array PS3 Eye toy (vue comme 4 micro), des premiers tests que j'ai fait, il faut modifier la conf de alsa pour que les 4 micro soiit vue, je test sur une dietpi, et ça marche moyen, a priori pulse audio ça le detect mieux, la conf que j'ai fait sur alsa, a par l'air de trop fonctionner (probleme de librarie asym). je connais pas assez le code de jarvis, mais est t'il très dépendant de alsa?

@Knoppix1

This comment has been minimized.

Copy link

Knoppix1 commented Feb 28, 2018

@nicoxygen
Pour l'instant j'ai mis sur pause tout ça, malgré toutes les modif je trouve que ça détecte pas bien les début et fin des ordres. Même mon magic_word ça merde une fois sur deux ...
Par contre pour moi quand ça détecte la demande et exécute l'ordre c'est pratiquement instantané et ça ma bluffé je m'attendais pas a un truc aussi rapide c'est pour ça que j'ai passé pas mal de temps a améliorer le truc. (Partir sur une base sainte du côté de la voice ça c'est bon, Faire les bonnes correspondance entre la voice et Jarivis... la ça merde) faut continuer et apres ça il y aurai des commande a implanté pour faire fonctionner les leds etc ....mais pour le moment pas le temps et si ça continue malheureusement Alexa va arriver en Français du coup le projet de la voice sera compatible en français. Ça fait chier je préférerai continuer en local pour les ordres mais bon....

PS : Pi 3 avec la voice + Pi 2b avec jeedom la liaison par le plugin Jeedom dans Jarvis aucuns pb de vitesse une fois la commande reconnu par Bing

@nicoxygen

This comment has been minimized.

Copy link

nicoxygen commented Feb 28, 2018

j'utilise wit avec jarvis, il me semble que bing est payant car la free trial version ne dure qu'un certain temps a moins que je me trompe.
pour les voix aussi ça pêche on a que des voix robotisés je sais que voxygen vend les voix sur
https://best-of-vox.com/windows
ce serait bien de le réintégrer

@Knoppix1 Knoppix1 referenced this issue Apr 2, 2018

Closed

Matrix voice #828

@diyfr

This comment has been minimized.

Copy link

diyfr commented Apr 19, 2018

Oui je confirme, Bing est en trial 30 jours...

@petitsurfeur

This comment has been minimized.

Copy link

petitsurfeur commented May 21, 2018

Bonjour

J'ai lu avec beaucoup d'interet cette discussion et je voulais savoir si vous aviez reussi a resoudre votre probleme et si vous avez reussi a obtenir quelque chose de stable ?

@LengZai @physicien @diyfr @alexylem Pouvez-vous nous faire un REX sur le matériel utilisé et les performances obtenues svp ? Je ne sais pas si je dois investir dan un micro (de type CM1000-USB ?) ou bien un Matrix (voice ou Creator ?) ?

Merci

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.