Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/01/2016, à 19:36

kholo

[Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Reconnaissance vocale et de la parole
Partie 1 : les bases
je vais coller à la doc et tenter d'aller un peu plus loin
Cela n'est qu'une partie car le travail supplémentaire consiste à adapter les fichiers de dictionnaires et de grammaires pour améliorer PocketSphinx... mais c'est pas gagné !

synopsis
on va utiliser PocketSphinx pour la première partie. L'idée est d'arriver à quelque chose de fonctionnel (comme la doc) et d'aller un petit peu plus loin (programmation de la première couche de compréhension).
Il reste encore des améliorations à faire car, par exemple, si on lance un processus, la reconnaissance est accaparée et, donc, impossible de fermer ce processus avec une commande vocale... mais cela viendra.

Installations
Créez un dossier bin dans votre dossier personnel pour y mettre les scripts suivants :

mkdir $HOME/bin

maintenant ouvrez un terminal (ctrl + alt + t)
copiez d'un bloc ces lignes
pour faire l'installation des logiciels, des dictionnaires et fichiers accessoires.
ou passer par un fichier script :

#!/bin/bash
# installation de pocketsphinx
# Depuis la doc Ubuntu
# https://doc.ubuntu-fr.org/pocketsphinx

sudo apt-get install python-pocketsphinx libpocketsphinx1 gstreamer0.10-pocketsphinx python-pyaudio

wget -O lium_french_f0.tar.gz http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Archive/French%20F0%20Broadcast%20News%20Acoustic%20Model/lium_french_f0.tar.gz/download
tar -xvzf lium_french_f0.tar.gz
cd lium_french_f0/
sudo mkdir -p $(pkg-config --variable=modeldir pocketsphinx)/hmm/fr_FR/french_f0
sudo mv * $(pkg-config --variable=modeldir pocketsphinx)/hmm/fr_FR/french_f0

wget -O french3g62K.lm.dmp http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/French%20Language%20Model/french3g62K.lm.dmp/download
sudo mkdir -p $(pkg-config --variable=modeldir pocketsphinx)/lm/fr_FR/
sudo mv french3g62K.lm.dmp $(pkg-config --variable=modeldir pocketsphinx)/lm/fr_FR/

wget -O frenchWords62K.dic http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/French%20Language%20Model/frenchWords62K.dic/download
sudo mv frenchWords62K.dic $(pkg-config --variable=modeldir pocketsphinx)/lm/fr_FR/

wget -O lium_french_f2.tar.gz http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Archive/French%20F2%20Telephone%20Acoustic%20Model/lium_french_f2.tar.gz/download

echo "# Pour tester exécuter cette ligne dans une console
pocketsphinx_continuous -dict /usr/share/pocketsphinx/model/FR/frenchWords62K.dic -hmm /usr/share/pocketsphinx/model/FR/ -lm /usr/share/pocketsphinx/model/FR/french3g62K.lm.dmp
"

Les Modules
1. Ecoute
2. Parser-ecoute
3. Traite-parseur
4. Parse_dico

On va créer des fichiers et les rendre exécutable puis utiliser un script pour lancer  "ecoute" dans un terminal et "parser-ecoute" dans un autre.

1. Ecoute
c'est pocketsphinx et sa configuration de base (dictionnaire plein… trop même !)
il en ressort un fichier texte que l'on va lire au fur et à mesure qu'il sera écrit

2. Parser-ecoute
On lit ligne par ligne et en continu le fichier issu de la reconnaissance de Ecoute

3. Traite-parseur
le premier traitement des instructions
ici seront les commandes communes et les changements de mode à ajouter plus tard.

4. Parse_dico
deuxième niveau du traitement si le mot ou la phrase n’appartiennent pas à traite-parseur, on va chercher plus loin en fonction du mode de recherche

Les scripts en bash
1. Ecoute
créez le fichier : ecoute
(pas de majuscule ni d'accent ni d'espace ou d’extension)

> $HOME/bin/ecoute
chmod +x $HOME/bin/ecoute

puis éditez le (avec l'éditeur de votre choix ; ici gedit) :

gedit $HOME/bin/ecoute
#!/bin/bash
#*************************************#
#~ NOM : ecoute	
#~ FONCTION :	
#~ VERSION="alpha"
#~ NOTES DE VERSIONS
#
#*************************************#
echo "initialisation"
ps="$(pkg-config --variable=modeldir pocketsphinx)"
ledict="$ps/lm/fr_FR/frenchWords62K.dic"
#~ lagramm="$ps/lm/fr_FR/grammaire.gram"
lehmm="$ps/hmm/fr_FR/french_f0"
lelm="$ps/lm/fr_FR/french3g62K.lm.dmp"
lefichier="reconnaissances.txt"

echo "début de la reconnaissance... patientez"
echo "Pour arrêter le serveur faites Ctrl + C dans ce terminal"

pocketsphinx_continuous -inmic yes -agc noise -hmm $lehmm -lm $lelm -dict $ledict 2>/dev/null > $lefichier 

echo "serveur arrêté"

exit 0

2. Parser-ecoute
créez le fichier : parser-ecoute
(pas de majuscule ni d'accent ni d'espace ou d’extension)

> $HOME/bin/parser-ecoute
chmod +x $HOME/bin/parser-ecoute

puis éditez le (avec l'éditeur de votre choix ; ici gedit) :

gedit $HOME/bin/parser-ecoute
#!/bin/bash
#*************************************#
# NOM : 		
# FONCTION :	
# VERSION="alpha"
# NOTES DE VERSIONS
#
#*************************************#
# echo "parser-ecoute -----------------" 
file="reconnaissances.txt"

	tail -f -n 1 $file | while read line;do
	   ./traite-parseur "$line"
	done
exit 0

3. Traite-parseur
créez le fichier : traite-parseur
(pas de majuscule ni d'accent ni d'espace ou d’extension)

> $HOME/bin/traite-parseur
chmod +x $HOME/bin/traite-parseur

puis éditez le (avec l'éditeur de votre choix ; ici gedit) :

gedit $HOME/bin/traite-parseur
#!/bin/bash
#*************************************#
# NOM : 		
# FONCTION :	
# VERSION="alpha"
# NOTES DE VERSIONS
#
#*************************************#
# echo "traite-parseur -----------------" 

une_phrase="$1"

# echo "
# *********************************
# *********** MODE TEST ***********
# *********************************"
# une_phrase="000000001: radio"
#* echo "je test l'entrée : "
#* echo "$une_phrase"

# d'abord on traite les commandes de retour de PocketSphinx
case "$une_phrase" in
	"READY....")
		echo "Prêt..."
		exit
		;;
	"Listening...")
		echo "..." #"j'écoute !!!"
		exit
		;;
	"Stopped listening, please wait...")
		echo "..." #"attends !!!"
		exit
		;;
	*)
		
		# retire tout ce qu'il y a avant le ": "
		la_phrase="${une_phrase##*: }"
		# echo "$la_phrase"
esac

# ici on va intercepter les phrases ou mots les plus importants ou répétitifs
case "$la_phrase" in
    "au repos")
        echo "Tranquille"
        ;;
    "au boulot")
        echo "vas y, je te rejoint !"
        ;;
    "quelle heure est -il")
    # "heure")
        echo "je donne l'heure"
        echo $(date)
        exit 1
        ;;
    *)
        echo "dico spécifique $la_phrase"
        ./parse_dico "test" $la_phrase
        # retour=parse_dico "test" $la_phrase

esac

exit

4. Parse_dico
créez le fichier : parse_dico
(pas de majuscule ni d'accent ni d'espace ou d’extension)

> $HOME/bin/parse_dico
chmod +x $HOME/bin/parse_dico

puis éditez le (avec l'éditeur de votre choix ; ici gedit) :

gedit $HOME/bin/parse_dico
#!/bin/bash
#*************************************#
# NOM : 		
# FONCTION :	
# VERSION="alpha"
# NOTES DE VERSIONS
#
#*************************************#
# echo "parse_dico -----------------" 

function mode_test {
	# zenity --info --text="mode test"
	case "$1" in
		"bonjour" )
			echo "bonjour $USER"
			return 1
			exit
			;;
		"musique" )
			vlc &
			return 1
			exit
			;;
		"fermé musique" )
			killall vlc
			return 1
			exit
			;;

		"courrier" )
			thunderbird &
			return 1
			exit
			;;

		"fermé courrier" )
			killall thunderbird
			return 1
			exit
			;;

		"internet" )
			firefox &
			return 1
			exit
			;;

		"fermé internet" )
			killall firefox
			return 1
			exit
			;;

		"fichier" )
			nautilus &
			return 1
			exit
			;;

		"fermé fichier" )
			killall nautilus
			return 1
			exit
			;;

		"radio" )
			vlc "http://streaming.radio.funradio.fr/rtl2-1-44-128" &
			return 1
			exit
			;;

		*)  :
			return 0
			exit			
			;;
	esac	
}
exit 0

maintenant un lanceur pour mettre tout cela en marche :

> $HOME/bin/rdlp
chmod +x $HOME/bin/rdlp

puis éditez le (avec l'éditeur de votre choix ; ici gedit) :

gedit $HOME/bin/rdlp
#!/bin/bash
# lance "ecoute" dans un terminal et "parser-ecoute" dans un autre.
LETERMINAL="xterm -e"
$LETERMINAL "./ecoute;read" &
$LETERMINAL "./parser-ecoute;read" &

exit 0

maintenant, testons cette installation :
faites des réglages de votre entrée de micro dans les propriétés système, allez dans audio puis entrée
et vérifiez que le vue mêtre monte lorque vous parlez et soit le plus bas possible lorsque vous êtes dans le calme...
puis dans un terminal (ctrl + alt +t), faites

cd $HOME/bin
./rdlp

écartez les deux terminal et parlez...
"bonjour" est un bon début ! wink

pour aller plus loin, je reprend le post de emile 197
NB : juste une première ébauche d'un todo pour créer des fichiers dic et gram
j'ai mis en bleu les passages qui demandent à être clarifiés

emile 197 a écrit :

on fait un fichier txt de mots un tour sur  Sphinx Knowledge Base Tool -- VERSION 3

c'est juste pour avoir un schéma si vous voulez utiliser le fichier .lm
pour le .dic vous remplacez les mots par ce que vous recherchez dans les fichiers .dic téléchargés
dans .lm même punition
si vous voulez remplacer le . lm par une grammaire

faite un fichier .gram

#JSGF V1.0;
grammar command;
<item> = salon ;
<mots> = lalumière |allume | la ;
<keyphrase> = dis emma ;

public <greet> = <item> | <mots> | <keyphrase> ;

puis

pocketsphinx_continuous -dict emmaFR.dic -hmm /usr/local/share/pocketsphi
nx/model/fr_FR/french_f0/ -jsgf emmaFR.gram -inmic yes

mot ou la phrase choisie et ignore tout le reste
faire un fichier .list
ici le fichier est emmaFR.list

emma /1e-8/

réglage autoriser de /1e-1/ a /1e-50

puis

pocketsphinx_continuous -dict emmaFR.dic -hmm /usr/local/share/pocketsphi
nx/model/fr_FR/french_f0/ -kws emmaFR.list -inmic yes

pour mémo
La  liaison  implique  la  prononciation  d’un  phonème  de  liaison  entre  deux  mots.
Pour donner un exemple : les mots “les oiseaux” se prononcent séparément “l e” et “w a
z  o” (en notation API), alors qu’ensemble ils se prononcent “l e z w a z o”

Dernière modification par kholo (Le 19/01/2018, à 11:21)

Hors ligne

#2 Le 11/01/2016, à 20:09

nam1962

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Je suis le fil !


[ Modéré ]

Hors ligne

#3 Le 11/01/2016, à 20:22

nam1962

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Joseph Pujol par exemple ?


[ Modéré ]

Hors ligne

#4 Le 12/01/2016, à 10:01

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

grandtoubab a écrit :

Ça existe de la parole non vocale?

je réponds pour faire avancer le chmilblick
PocketSphinx (ps) fait de la reconnaissance vocale.
le retour est de 3 niveaux :
les retours qui concernent plus le système, le programme.
les infos sur sont état : "READY....", "Listening...", "Stopped listening, please wait..."
et la reconnaissance : des mots ou des phrases.
c'est la première partie.

Ensuite il faut "parser" ces ensembles de mots ou des phrases
et c'est là que commence le travail de reconnaissance de la parole.

Avec des instructions simples, en diminuant et adaptant le dico et la grammaire,
on peut atteindre un niveau supérieur à 90% (pocketsphinx à une fonction pour faire ce calcul)
et, même dans un environnement bruyant.

Dans une discussion naturelle, le contexte influe sur notre façon de comprendre
car on s'attend intuitivement à entendre un certain type d'information.
Si on comprends mal certain mot, on est capable de remplir les trous.
"un peu cmome l'écirture et l'invesrion de ltetre"
dur à lire mais on comprend  ;°)

J'ai bien essayé de réinventer la roue en remontant au dessus de ps (sphinx)
mais ce que ps permet est prodigieux ce qui en fait un mastodonte à maîtriser.

avec mes trois petits scripts
on peut rapidement mettre en place un service de domotique.

Hors ligne

#5 Le 17/01/2016, à 16:04

Xzu Rukneg

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Merci kholo.

Pour ma part je cherche une solution simple pour faire de la dictée numérique uniquement (libre et sous ubuntu).
Deux questions: 1- Pense tu que ce que tu propose permet d'y arriver?
                          2- Connais tu une méthode "plus simple"?

Dernière modification par Xzu Rukneg (Le 17/01/2016, à 16:04)

Hors ligne

#6 Le 19/01/2016, à 11:31

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Xzu Rukneg a écrit :

Merci kholo.

Pour ma part je cherche une solution simple pour faire de la dictée numérique uniquement (libre et sous ubuntu).
Deux questions: 1- Pense tu que ce que tu propose permet d'y arriver?
                          2- Connais tu une méthode "plus simple"?

la reconnaissance numérique de la parole est au même niveau que celle de l'écriture...
il existe des outils, plutôt en kit !

Dans le gratuit (pas spécialement libre, on cherche juste à ce que cela fonctionne),
c'est PocketSphinx (Ps) qui est devant (c'est mon avis)
ensuite tout tourne autour de Sphinx (vocal, attention il existe un autre Sphinx).
un pdf sur shinx pour voir à quel point ça ne se fait pas tout seul

sphinx sur raspberry pi en java

Donc pour Ps, il existe une vaste plage de réglages possibles à commencer par les fichiers externes
je pense qu'il faudrait mettre un gros coup de balais dans le dico : il y a trop de choses qui emmènent dans le mur lors de la reconnaissance.

il y a aussi un affinage des statistiques liées à la grammaire. Là ça commence à devenir un gros truc à faire quand on s'y met. J'y ai juste mis le nez !

je ne rentre pas trop dans les détails; la démonstration est :
Pour le moment (janvier 2016), on a pas encore d'outils ouverts ou libres qui permettent de travailler efficacement dans la paroles et son flot. Il existe des logiciels payants (les plus connus fonctionnent sous Windows) qui font cela relativement bien.

Pour le libre, pour le moment, il faudra se contenter de phrases simples :
-ouvrir frigo
-sortir bière
-amener ça !
et attendre que quelqu'un construise le robot qui s'exécute !

Hors ligne

#7 Le 16/10/2016, à 08:53

emile 197

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Salut

super travail kholo

comme j'utilise tes scripts  je poste mes travaux

pour alléger la reconnaissance on fait un fichier txt de mots


allume
salon

limière

puis on va faire un tour sur  Sphinx Knowledge Base Tool -- VERSION 3

on clic sur parcourir  on selectionne  notre fichier texte  puis clic sur COMPILE KNOWLEDGE BASE

on telecharge le zip  a decompresser dans le dossier du projet


éditer le script ecoute pour le modifier (nous utilison .dic et .lm)

kholo a écrit :

#!/bin/bash
#*************************************#
#~ NOM : ecoute   
#~ FONCTION :   
#~ VERSION="alpha"
#~ NOTES DE VERSIONS
#
#*************************************#
echo "initialisation"
#ps="$(pkg-config --variable=modeldir pocketsphinx)"
    ledict="$ps 0990.dic"
    #~ lagramm="$ps/lm/fr_FR/grammaire.gram"
    #lehmm="$ps/hmm/fr_FR/french_f0"
    lelm="$ps 0990.lm"
    lefichier="reconnaissances.txt"

echo "début de la reconnaisance... patientez"
echo "Pour arrêter le serveur faites Ctrl + C dans le terminal"

pocketsphinx_continuous -lm $lelm -dict $ledict 2>/dev/null > $lefichier

echo "serveur arrêté"

exit 0

un petit plus

on ajoute une voie a notre projet

avec svoxpico 


pico2wave -l fr-FR -w test.wav "je técoute !";play test.wav;

Dernière modification par emile 197 (Le 16/10/2016, à 08:54)

Hors ligne

#8 Le 17/10/2016, à 12:10

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

ouhhh !!!
je vais regarder tout ça à tête reposée !
merci pour le complément !

edit :
donc j'ai ajouter :

sudo apt-get install libttspico-utils

puis
le test fonctionne !

pico2wave -l fr-FR -w test.wav "je técoute !";play test.wav;

Dernière modification par kholo (Le 17/10/2016, à 17:13)

Hors ligne

#9 Le 04/09/2017, à 14:53

Rémi1995

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Et est-ce que c'est possible d'avoir la même chose pour le français ?? Parce qu'il y a des mauvaises prononciation dans le fichier généré

Hors ligne

#10 Le 04/09/2017, à 17:01

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

alors si tu parles de prononciation c'est de la synthèse vocale, pas de la reconnaissance...
pour ça j'ai un autre script ; parle (pas original mais facile de me souvenir)
ça se passe avec espeak et mbrola

sudo apt install espeak mbrola mbrola-fr*

(j'ai laissé la version pico en commenté dedans)

mkdir $HOME/bin
> $HOME/bin/parle
chmod +x $HOME/bin/parle
gedit $HOME/bin/parle

et coller le texte suivant dedans:

#!/bin/bash
nomlogiciel="$(basename "$0")"
# ****************************************
votretexte="$@"
# echo "texte de ${#votretexte} caractères"
# ****************************************
# test la présence d'arguments
erreur=65
if [ ! -n "$1" ] ; then
	leTexte="Usage :... $nomlogiciel suivi du texte à dire"
	$0 "Pour utiliser ce script, taper $nomlogiciel, suivi du texte à dire" &
	zenity --info --title = --text="Usage : \n\n$nomlogiciel texte"
	exit $erreur
fi
#****************************************
#test si trop de caractères (si >= 2^15)
# [ ${#votretexte} -ge 32768 ] && parle 'le texte à dire est trop long' && exit ;

#****************************************
#VERSION pico2wave
#pico2wave -l fr-FR -w test.wav "$votretexte" ; 
#aplay test.wav 
#****************************************

#pico2wave -l fr-FR -w /tmp/pico.wav "$votretexte" && aplay /tmp/pico.wav && rm -f /tmp/pico.wav


# CETTE LIGNE LANCE AVEC PICO2WAV
# pico2wave -l fr-FR -w /tmp/pico.wav "$votretexte" && aplay /tmp/pico.wav
#****************************************
# exit 0

# ****************************************
# VERSION espeak
# Début de la section de configuration
# définition de la voix à utiliser par Mbrola, 
# à adapter selon la voix choisie et son chemin
# ****************************************

# /usr/share/mbrola/voices
# fr1  fr1.txt  fr2  fr2.txt  fr3  fr3.txt  fr4  fr4.txt  fr6  fr6.txt
VOIX='/usr/share/mbrola/voices/fr1' # ATTENTION A L'EMPLACEMENT DES VOIX

# TYPE='mb/mb-fr4' # à décommenter si vous avez téléchargé une voix de femme
TYPE='mb/mb-fr1' # à décommenter si vous avez téléchargé une voix d'homme

# Fin de la section de configuration
# ****************************************
# on teste si la lecture est en cours, pour l'arrêter le cas échéant
##### test pour savoir si la lecture est en route #####
leMbrola="$(ps -A | grep mbrola | awk '{ print $1 }' )"
if [ ! -z $leMbrola ]; then
     kill $leMbrola && sleep 1
else
	espeak -v $TYPE "$votretexte" -s 150 -p 40 "$@" | mbrola $VOIX - -.au | aplay
fi
# ****************************************

exit 0

pour l'appeler faire :

parle "le texte à dire"

Dernière modification par kholo (Le 18/07/2018, à 07:04)

Hors ligne

#11 Le 06/09/2017, à 16:12

Rémi1995

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

Non non je parlais des phonèmes pour le dico

Hors ligne

#12 Le 06/09/2017, à 16:51

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

voilà, c'est tout le problème avec PS : les dicos
on peut générer un dico de reconnaissance mais il y a toute une procédure pour le rendre utilisable
et c'est très orienté grand breton donc pas beaucoup d'exemples pour le français
la lecture ici et et aussi

Hors ligne

#13 Le 18/12/2017, à 13:01

emile 197

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

salut

existe t'il une méthode pour que pocketsphinx ne reconnaisse que les mots ou phrases du .dct et ignorait tout le reste

je fais le test avec une grammaire on garde le .dic et remplace le .lm par un .gram

#JSGF V1.0;
grammar command;
<item> = BUREAU | SALON ;
<keyphrase> = ALLUME LE SALON ; 
<keyword> = EMMA;
public <greet> = <keyphrase> | <keyword> |<item> ;

ou

#JSGF V1.0;

grammar commands;

<command> = allumer | éteindre | activer | éteindre | stopper | désactiver | couper | augmenter | diminuer | monter | descendre;
<lela> = le | la | les | l;
<poursurde> = pour | sur | du | de;

<color> = blanc | rose | jaune | orange | violet | rouge | vert | bleu;

<item> = bureau | salon | table | chambre | cuisine | volet;

<keyword> = maison;

public <order> = <keyword> | <command> [<lela>] <item> | couleur <color> [<poursurde>] [<lela>] <item>;

pockethinx_continuous -jsgf emma.gram -dict 0887.dic -inmic yes

Dernière modification par emile 197 (Le 18/12/2017, à 13:07)

Hors ligne

#14 Le 18/12/2017, à 13:42

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

salut,
j'ai pas gratté de ce côté là,
mon précédent post reste d'actualité...
un dico léger change la donne mais il faut le composer...
n'hésite pas à donner des infos de ton avancement, ça va en intéresser plus d'un
(moi le premier ! wink )

Hors ligne

#15 Le 18/01/2018, à 11:50

emile 197

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

salut

méthode pour que pocketsphinx ne reconnaisse que le mot ou la phrase choisi et ignore tout le reste


en premier nous passon en français

télécharger le Modèles français

wget -O lium_french_f0.tar.gz http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Archive/French%20F0%20Broadcast%20News%20Acoustic%20Model/lium_french_f0.tar.gz/download

Décompresser

tar -xvzf lium_french_f0.tar.gz

on configure

cd lium_french_f0/

sudo mkdir -p `pkg-config --variable=modeldir pocketsphinx`/fr_FR/french_f0

sudo mv * `pkg-config --variable=modeldir pocketsphinx`/fr_FR/french_f0

télécharger (fr.dic)

https://sourceforge.net/projects/cmusph … ls/French/

et (frenchWords62K.dic)

wget -O frenchWords62K.dic [url]http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/French/fr.dict/download[/url]

il nous serviront a rechercher les mots avec leur phonèmes

on fait un fichier txt de mots un tour sur  Sphinx Knowledge Base Tool -- VERSION 3

c'est juste pour avoir un schéma si vous voulez utiliser le fichier .lm

pour le .dic vous  remplacez les mots par se que vous recherchez dans les fichiers .dic télécharger

dans .lm même punition


si vous voulez remplacer le . lm par une grammaire

faite un fichier .gram

#JSGF V1.0;
grammar command;
<item> = salon ;
<mots> = lalumière |allume | la ;
<keyphrase> = dis emma ;

public <greet> = <item> | <mots> | <keyphrase> ;

puis

pocketsphinx_continuous -dict emmaFR.dic -hmm /usr/local/share/pocketsphi
nx/model/fr_FR/french_f0/ -jsgf emmaFR.gram -inmic yes

mot ou la phrase choisi et ignore tout le reste

faire un fichier .list

emma /1e-8/

reglage autoriser de /1e-1/ a /1e-50/


puis


pocketsphinx_continuous -dict emmaFR.dic -hmm /usr/local/share/pocketsphi
nx/model/fr_FR/french_f0/ -kws emmaFR.list -inmic yes

pour memo

La  liaison  implique  la  prononciation  d’un  phonème  de  liaison  entre  deux  mots.
Pour donner un exemple : les mots “les oiseaux” se prononcent séparément “l e” et “w a
z  o” (en notation API), alors qu’ensemble ils se prononcent “l e z w a z o”

Dernière modification par emile 197 (Le 20/01/2018, à 10:32)

Hors ligne

#16 Le 19/01/2018, à 10:02

kholo

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

super,
bons retours !
il reste encore quelques lignes que tu peux mettre entre balise code pour être plus lisible
j'ajoute un lien et une copie sur le premier post comme continuité des réglages de ps wink

Hors ligne

#17 Le 26/07/2018, à 15:30

emile 197

Re : [Script/bash] [Tutoriel] Reconnaissance vocale et de la parole -p1

reglage pocketsphinx Adaptation du modèle acoustique

nous partirons du principe que pocketsphinx est configuré pour le français

vérifier si pocketsphinx est correctement installé

pkg-config --cflags --libs pocketsphinx sphinxbase

assurez-vous que la sortie ressemble à ceci:

-I/usr/local/include -I/usr/local/include/sphinxbase -I/usr/local/include/pocketsphinx -I/usr/local/include -I/usr/local/include/sphinxbase -L/usr/local/lib -lpocketsphinx -lsphinxbase -lsphinxad -lpulse -lpulse-simple -lpthread -lm

créer un repertoire de travaille (mon projet s'appelle emma-fr)

ouvrez votre terminale(ctrl+t)

mkdir emma-fr

dans votre repertoire de travail un  repertoire  pour vos reglages

cd emma-fr

mkdir reglages

dans reglages je fais un fichier .dic ( mots et phonemes rechercher dans fr.dic et frenchWords62K.dic) ctrl+f pour faire une recherche

petite precision vos fichiers .dic et .lm  doivent avoir les mots classer dans le même ordre(et par ordre alphabetique ?)
pour eviter ce type d'erreure

(ERROR: "dict.c", line 195: Line 18: Phone 'le' is mising in the acoustic model; word 'allume' ignored)

a partir du fichier .dic je fais une liste de mots

allume
couloir
dis
emma
éteints
écoute
est
heure
il
le
la
lumière
quelle
salon

un tour sur  Sphinx Knowledge Base Tool -- VERSION 3 (nous utiliserons le fichier .lm)

adaptation du model Arpa us au français pour utiliser /usr/local/share/pocketsphinx/model/fr_FR/french_f0

editer le fichier .lm remplacer les mots en majuscule par des minuscule (ctrl+H)


toujour dans le repertoire reglage je copie le fichier continuous.c qui ce trouve dans /dossier personnel/pocketsphinx/src/programs

je le compile  en le renommant

gcc continuous.c -I/usr/local/include -I/usr/local/include/sphinxbase -I/usr/local/include/pocketsphinx -L/usr/local/lib -lpocketsphinx -lsphinxbase -lsphinxad -o emma-continuous

reglage l'élocution (la vitesse a laquelle vous parler)

enregistrer votre voix (Enregistrement WAVE Signé 16 bit Little Endian, Taux 16000 Hz, Mono)

arecord -r 16000 -f S16_LE  -d 30 /home/user/emma-ecouteFR/emma-fr/reglages/test-mic.wav

je donne le fichier .wav a pocketsphinx (le resultat dans result.txt)

./emma-continuous -infile test-mic.wav  -dict emmaFR.dic -hmm /usr/local/share/pocketsphinx/model/fr_FR/french_f0/ -lm emmaFR.lm >result.txt

le fichier result.txt me sert a construire les fichiers .list (Key phrases ou magic word)


emma écoute /1e-15/
écoute emma /1e-15/
heure /1e-3/

.gram (la grammaire) les commandes

#JSGF V1.0;
grammar command;
<action> = allume | éteints | lumière ;
<piece> =  salon;
public <commande> = <action> <piece>;

Hors ligne