Tuto / commandes pour entrainer un wake-word

I - Trouver plein de bruits 
 Extraire des bandes-sons de film: 
 ffmpeg -i /data/films/La\ grande\ vadrouille.avi -acodec pcm_s16le -ar 16000 -ac 1 -f wav la-grande-vadrouille.wav
ffmpeg -i /data/films/Kill\ Bill\ Vol\ 1\ \[1080p\]\ MULTi\ 2003\ BluRay\ x264-Pop\ .mkv -acodec pcm_s16le -ar 16000 -ac 1 -f wav kill-bill.wav
ffmpeg -i /data/films/Harry\ Potter\ 4\ Et\ La\ Coupe\ De\ Feu\ 2005\ \[1080p\]\ MULTI\ 2004\ Bluray\ X264\ lorraines.mkv -acodec pcm_s16le -ar 16000 -ac 1 -f wav hp-4.wav
ffmpeg -i /data/films/Harry\ Potter\ 1\ A\ L\'Ecole\ Des\ Sorciers\ \[1080p\]\ MULTI\ 2001\ Bluray\ X264\ lorraines.mkv -acodec pcm_s16le -ar 16000 -ac 1 -f wav hp-1.wav
ffmpeg -i /data/films/Hunger\ Games\ 1.mkv -acodec pcm_s16le -ar 16000 -ac 1 -f wav hunger-games-1.wav
ffmpeg -i /data/films/Pulp\ Fiction.avi -acodec pcm_s16le -ar 16000 -ac 1 -f wav pulp-fiction.wav
ffmpeg -i /data/films/DRAGONS\ \(2010\).avi -acodec pcm_s16le -ar 16000 -ac 1 -f wav dragon.wav
ffmpeg -i /data/films/DRAGONS\ \(2010\).avi -acodec pcm_s16le -ar 16000 -ac 1 -f wav galdiator.wav
ffmpeg -i /data/films/Gladiator\ 2000\ 10th\ Anniversary\ Edition\ MULTi\ TrueFrench\ 1080p\ HDLight\ x265\ HEVC.GHT.mkv -acodec pcm_s16le -ar 16000 -ac 1 -f wav galdiator.wav
ffmpeg -i /data/films/Alice\ au\ pays\ des\ merveilles.avi -acodec pcm_s16le -ar 16000 -ac 1 -f wav alice.wav
 
 Télécharger des sons de pluie, et de bruit exterieur depuis Youtube: 
 youtube-dl -x "https://www.youtube.com/watch?v=mPZkdNFkNps"
youtube-dl -x "https://www.youtube.com/watch?v=xNN7iTA57jM"
youtube-dl -x "https://www.youtube.com/watch?v=BOdLmxy06H0"
youtube-dl -x "https://www.youtube.com/watch?v=BOdLmxy06H0"
youtube-dl -x "https://www.youtube.com/watch?v=cO_IFJaWmhA"
 
 Télécharger des sons de pubs et de voiture depuis soundarchive 
 Télécharger des podcasts 
 J'ai utilisé l'appli de podcast de mon telephone: AntennaPod. 
 
 telecharger le podcast 
 Appui long sur la piste -> partager -> envoi avec kde connect 
 
 J'ai 20 fichiers qui font chacun entre 30 minutes et 1h30 de long. 
 Récuperer de la musique: 
 J'ai copié 140 pistes de differents style d'albums (j'ai mis une grosse part de chanson francaise). 
 Récuperer des wake-word opensource: 
 https://github.com/MycroftAI/precise-community-data 
 j'ai pris ceux qui ressemblaient au miens, à savoir: 
 
 athena 
 amelia 
 
 II - Enregistrer plein de wake word 
 
 j'en ai enregistré une centaine via le micro de la reconnaissance vocal en me mettant à plein d'endroit dans ma chambre, avec precise-collect 
 j'en ai enregistré ensuite 10 par personnes volontaire via le micro de mon pc:
 
 Ma famille (6 personnes) 
 Des amis (3 personnes) 
 
 
 J'en ai enregistré une bonne 50aine, avec les micros de differents pcs 
 
 III - Nettoyer les enregistrements de wake word 
 J'ai utilisé audacity, et je l'ai fait à la main (ptètre qu'avec des script ca se fait aussi). 
 En gros, j'ai verifié qu'il n'y ai que le mot-clé dans l'enregistrement, et j'ai coupé si il y avait trop de silence au début ou à la fin. 
 Ca me fait des enregistrement qui font entre 0.8s et 2s, avec un peu de blanc au début et à la fin. 
 IV - Convertir et découper les source de bruit 
 Convertir en wav: 
 SOURCE_DIR=music
DEST_DIR=music-wav/
# selon les extensions de fichier, changez *.mp3 par *.<extension> (youtube-dl télécharge en m4a)
for i in $SOURCE_DIR/*.mp3; do echo "Converting $i..."; fn=${i##*/}; ffmpeg -i "$i" -acodec pcm_s16le -ar 16000 -ac 1 -f wav "$DEST_DIR/${fn%.*}.wav"; done
for i in $SOURCE_DIR/*.flac; do echo "Converting $i..."; fn=${i##*/}; ffmpeg -i "$i" -acodec pcm_s16le -ar 16000 -ac 1 -f wav "$DEST_DIR/${fn%.*}.wav"; done
 
 Decouper par tranche de 30s: 
 for f in *.wav; do sox "$f" "split.$f" trim 0 30 : newfile : restart ; done
 
 V - Augmenter artificiellement vos mots-clés: 
 Il faut d'abord choisir certaines partie du bruit précedents qu'on va ajouter par dessus nos enretgistrement de mots-clé
J'ai pris: 
 
 Les videos youtubes 
 Le son de soundarchive 
 Et des morceaux de classique 
 
 Pour être tranquille, on les normalise avec sox: 
 SOURCE_DIR=noise-short/
DEST_DIR=noise-norm/
for i in $SOURCE_DIR/*.wav; do echo "Converting $i..."; fn=${i##*/}; sox --norm "$i" "$DEST_DIR/${fn%.*}.wav"; done
 
 Pis pour chaque groupe, on va les appliquer avec ce script sur nos wake-word (vous pouvez changer le coeff 0.1 par 0.05 ou 0.2 ou 0.3 selon vos enregistrement): 
 #!/bin/bash

NOISEDIR=$1

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

for f in *.wav
do 
 NOISEFILE=$(find ${NOISEDIR} -type f | shuf -n 1)
 
 sox -m -v 0.9 $f -v 0.1 ${NOISEFILE} noise.$f trim 0 `soxi -D $f`
done
 
 Normalement après ca on a triplé nos wake-words. 
 VI - Installer mycroft precise: 
 https://github.com/MycroftAI/mycroft-precise#source-install 
 
 il faut python 3.6 (pour pas se prendre la tète installer ubuntu 18.04) 
 il y a un bug dans le requirements.txt, après l'installation: pip install h5py<3.0.0 
 
 VII - Entrainement: 
 
 Mettre 80/90% de vos wake-word dans le dossier wake-word et le reste dans test/wake-word 
 precise-train yoda1.net maitre_yoda/ -e 100 -s 0.5 
 Faire un dossier avec tout vos noise puis precise-train-incremental yoda1.net maitre_yoda/ -r path/to/noise-folder -e 50 -th 0.4 -s 0.5 
 Attendre une bonne heure avec un pc de gamer de l'an 2019 
 
 IIX - Profitez !