{"id":6873,"date":"2025-05-31T16:16:13","date_gmt":"2025-05-31T14:16:13","guid":{"rendered":"https:\/\/spgoo.org\/?page_id=6873"},"modified":"2025-07-01T10:03:25","modified_gmt":"2025-07-01T08:03:25","slug":"exemples-entretien","status":"publish","type":"page","link":"https:\/\/spgoo.org\/?page_id=6873","title":{"rendered":"Exemples \/ Entretien"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-text-align-center\">Exemples de prononciation : FRAP\u00e9OR<\/h2>\n\n\n\n<link rel='stylesheet' id='4485-css'  href='https:\/\/spgoo.org\/wp-content\/uploads\/winp-css-js\/4485.css?ver=1747039442' type='text\/css' media='all' \/>\n\n\n\n<p>Liste de s\u00e9lection d&#8217;extrait d&#8217;entretien de M1 SDL 2024 &#8211; 2025 effectuer par SPGoO \u00e0 caract\u00e9riser par les expert(e)s.du consortium de FRAP\u00e9OR. Cette interface WEB de caract\u00e9risation des prononciations a \u00e9t\u00e9 \u00e9labor\u00e9e par SPGoO \u00e0 partir du protocole d\u00e9fini par Badreddine Hamma dans le cadre du cours SDL en M1 \u00e0 l&#8217;universit\u00e9 d&#8217;Orl\u00e9ans. Pour le positionnement des voyelles sur le graphe d&#8217;axes Tendu-rel\u00e2ch\u00e9 et clair-sombre nous nous sommes appuy\u00e9 sur la librairie JSXGraph et sur le graphe fourni par Alena Gradoboeva du consortium FRAP\u00e9OR. Ces caract\u00e9risations vont nous permettre de d\u00e9finir un mod\u00e8le d&#8217;analyse sp\u00e9cifique de signaux sonores pour d\u00e9tecter les difficult\u00e9s de prononciation.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Image du protocole <\/summary>\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1018\" height=\"988\" src=\"https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-33-20.png\" alt=\"\" class=\"wp-image-7573\" srcset=\"https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-33-20.png 1018w, https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-33-20-300x291.png 300w, https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-33-20-768x745.png 768w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/figure>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Graphe voyelles<\/summary>\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"647\" src=\"https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-57-19-1024x647.png\" alt=\"\" class=\"wp-image-7588\" srcset=\"https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-57-19-1024x647.png 1024w, https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-57-19-300x190.png 300w, https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-57-19-768x485.png 768w, https:\/\/spgoo.org\/wp-content\/uploads\/2025\/06\/Capture-du-2025-06-30-10-57-19.png 1192w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/details>\n\n\n<!-- description de la page a charger avec l'ensemble des segments (groupe de souffle)  issus des entretiens d'allophones -->\r\n<script type=\"text\/javascript\" charset=\"UTF-8\" src=\"https:\/\/cdn.jsdelivr.net\/npm\/jsxgraph\/distrib\/jsxgraphcore.js\"><\/script>\r\n<link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/jsxgraph\/distrib\/jsxgraph.css\" \/>\r\n<script src=\"\/personnalisation\/frapeor\/wavesurfer.min.js\"><\/script>\r\n<script src=\"\/personnalisation\/frapeor\/plugins\/regions.min.js\"><\/script>\r\n<script src=\"\/personnalisation\/frapeor\/plugins\/timeline.min.js\"><\/script>\r\n<script src=\"\/personnalisation\/frapeor\/plugins\/spectrogram.min.js\"><\/script>\r\n\r\n<style>\r\n.mybox1 {\r\n      border: 1px solid #999;\r\n      font-size: 12px;\r\n      color: #1c87c9;\r\n      background-color: #eee;\r\n      border-radius: 5px;\r\n      box-shadow: 4px 4px #ccc;\r\n      width: 120px !important;\r\n      height: 30px !important;\r\n}\r\n\t\r\n#mydivComments {\r\n  position: fixed;\r\n  top: 150px;\r\n  left: 200px;\r\n\theight:500px;\r\n  z-index: 9;\r\n  background-color: #00c2a9;\r\n  border: 1px solid #d3d3d3;\r\n  text-align:left;\r\n  z-index:1000;\r\n}\r\n\r\n#mydivCommentsheader {\r\n  padding: 10px;\r\n  cursor: move;\r\n  z-index: 10;\r\n  font-size:16px;\r\n  background-color: #00c2a9;\r\n  color: #fff;\r\n}\r\n\t\r\n\t\r\n.fen_arrondie {\r\n  border-bottom: 1px solid #ddd;\r\n  -webkit-border-top-left-radius: 15px;\r\n  -moz-border-radius-topleft: 15px;\r\n  -ms-border-radius-topleft: 15px;\r\n  border-top-left-radius: 15px;   \r\n\t\r\n  -webkit-border-top-right-radius: 15px;\r\n  -ms-border-top-right-radius: 15px;\r\n  -moz-border-radius-topright: 15px;\r\n  border-top-right-radius: 15px;\t\r\n\t\r\n  -webkit-border-bottom-right-radius: 15px;\r\n  -ms-border-bottom-right-radius: 15px;\r\n  -moz-border-radius-bottomright: 15px;\r\n  border-bottom-right-radius: 15px;\t\r\n\t\r\n  -webkit-border-bottom-left-radius: 15px;\r\n  -ms-border-bottom-left-radius: 15px;\r\n  -moz-border-radius-bottomleft: 15px;\r\n  border-bottom-left-radius: 15px;\t\t\t\r\n}\t\t\r\n\t\r\n<\/style>\r\n\r\n<script>\r\n\t\/\/rgb(91, 192, 222)\r\nwindow.MathJax = {\r\n  tex: {\r\n    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\r\n    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ],\r\n    packages: ['base', 'ams']\r\n  },\r\n  options: {\r\n    ignoreHtmlClass: 'tex2jax_ignore',\r\n    processHtmlClass: 'tex2jax_process'\r\n  }\r\n};\r\n<\/script>  \r\n<script type=\"text\/javascript\" id=\"MathJax-script\"  src=\"https:\/\/cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-mml-chtml.js\"><\/script>\r\n\r\n<div id=\"mydivComments\" class=\"fen_arrondie\" style=\"width:550px;margin-bottom:10px;display:block\" >\r\n\t<div id=\"mydivCommentsheader\"  class=\"fen_arrondie\" style=\"display:flex;justify-content:space-between;height:70px;\">\r\n\t\t<!-- <span style=\"color:black;\">Fen\u00eatre de suivi des commentaires<\/span>\u00a0\u00a0 -->\r\n\t\t<h4 style=\"color:black;\">Suivi des commentaires<\/h4>\u00a0\u00a0\r\n\t\t<button title=\"Sauvegarde dans localstorage\" onclick=\"sauvegarde_commentaires();\" style=\"height:40px;\"  class=\"btn btn-default\"><i class='fa fa-save'><\/i><\/button>\r\n\t\t<button title=\"Export en fichier json\" onclick=\"export_commentaires();\" style=\"height:40px;\" class=\"btn btn-default\"><i class='fa fa-file-export'><\/i><\/button>\r\n\t<\/div>\r\n\t<div class=\"modele_local_Comments\" id=\"div_corps_Comments\" style=\"background-color:#85c1e9;color:#130b8c;padding:10px 10px 10px 10px\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col-sm-3\">\r\n\t\t\t\t<p>Liste<\/p>\r\n\t\t\t\t<div id=\"liste_enonces\" style=\"overflow:auto;height:450px;\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"col-sm-9\">\r\n\t\t\t\t<p>Contenu<\/p>\r\n\t\t\t\t<div id=\"contenu_title\"><\/div>\r\n\t\t\t\t<div id=\"contenu_detail\"  style=\"overflow:auto;height:450px;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t\r\n\t\t<\/div>\t\r\n\t<\/div>\r\n<\/div>\r\n\r\n<div id=\"zone_segments\"><\/div>\r\n\t\r\n<script>\r\n\r\n\r\nconst sauvegarde_data=function(contenu) {\r\n\tconsole.log(\"Database opened successfully\");\r\n\tlocalStorage.setItem(\"contenu_enonce\",JSON.stringify(contenu_commentaires))\r\n}\r\n\r\n\t\r\n\t\r\n\/\/ tableau des segments extraits \r\n\t\t\r\n\/\/let contenu_commentaires={}\t;\r\nlet contenu_commentaires = JSON.parse(localStorage.getItem(\"contenu_enonce\"));\t\r\n\t\r\n\t\r\n\t\r\nconst liste_fichiers={\r\n\t\"2019_2025-03-19.wav\":{\"title\":\"Ann\u00e9e 2019\"},\r\n\t\"jesuismarieavecunefrancaise_2025-03-19.wav\":{\"title\":\"Je suis mari\u00e9 avec une fran\u00e7aise\"},\r\n\t\"abesoinbeaucoupdemedicaments_2025-03-19.wav\":{\"title\":\"Il a besoin de beaucoup de m\u00e9dicaments\"},\r\n\t\"jesuismedecin_2025-03-19.wav\":{\"title\":\"je suis m\u00e9decin\"},\r\n\t\"anniversairejaifaitlecrituretresmal_2025-03-19.wav\":{\"title\":\"Anniversaire j'ai fait l'\u00e9criture mal\"},\r\n\t\"jeviensdecuba_2025-03-19.wav\":{\"title\":\"Je viens de Cuba\"},\r\n\t\"apreslachirurgiethoracique_2025-03-19.wav\":{\"title\":\"Apr\u00e8s la chirurgie thoracique\"},\r\n\t\"laconstitutionfrancaiseesttresimportante_2025-03-19.wav\":{\"title\":\"La constitution fran\u00e7aise est tr\u00e9s importante ....\"},\r\n\t\"bonjour_2025-03-19.wav\":{\"title\":\"Bonjour\"},\r\n\t\"laliaison_2025-03-19.wav\":{\"title\":\"La liaison\"},\r\n\t\"cartedesejourdelaresidence_2025-03-19.wav\"\t:{\"title\":\"Carte de s\u00e9jour de la r\u00e9sidence\"},\r\n\t\"lapremierefoislachirurchiegenerale_2025-03-19.wav\":{\"title\":\"La premi\u00e8re fois la chirurgie g\u00e9n\u00e9rale\"},\r\n\t\"commelachirurgie_2025-03-19.wav\":{\"title\":\"comme la chirurgie\"},\t\t\t\r\n\t\"lorsquejepeuxavoir_2025-03-19.wav\":{\"title\":\"lorsque je peux avoir\"},\r\n\t\"commeunevoyellecommence_2025-03-19.wav\":{\"title\":\"comme une voyelle commence\"},\t\r\n\t\"monactivitetoujoursformel_2025-03-19.wav\":{\"title\":\"mon activit\u00e9 toujours formel\"},\r\n\t\"differentsactivites_2025-03-19.wav\":{\"title\":\"diff\u00e9rentes activit\u00e9s\"},\r\n\t\"museedelenfant_2025-03-19.wav\":{\"title\":\"mus\u00e9e de l'enfant\"},\r\n\t\"dupoissonduchocolat_2025-03-19.wav\":{\"title\":\"du poisson et du chocolat\"},\r\n\t\"prefecture_2025-03-19.wav\":{\"title\":\"pr\u00e9fecture\"},\r\n\t\"estcequelleconstituepourlemondeA_2025-03-19.wav\":{\"title\":\"Est-ce qu'elle constitue le monde\"},\t\r\n\t\"premierelementquejaimedelafrance_2025-03-19.wav\":{\"title\":\"premi\u00e8re \u00e9l\u00e9ment que j'aime de la france\"},\r\n\t\"homologue_2025-03-19.wav\"\t:{\"title\":\"Homologuer\"},\r\n\t\"pulmonairetracheamedecine_2025-03-19.wav\":{\"title\":\"pulmonaire et trach\u00e9a m\u00e9decine\"},\r\n\t\"jaimepluslanourrituresallee_2025-03-19.wav\":{\"title\":\"j'aime plus la nourriture sal\u00e9e\"},\t\r\n\t\"quelquespersonnesquijouenetauxechecs_2025-03-19.wav\":{\"title\":\"quelques personnes qui jouent aux echecs\"},\r\n\t\"jeannedarc_2025-03-19.wav\"\t:{\"title\":\"Jeannne d'Arc\"},\t\t\t\r\n\t\"sontpourmoitresamusantes_2025-03-19.wav\":{\"title\":\"sont pour moi amusantes\"},\r\n\t\"jemappelle_2025-03-19.wav\":{\"title\":\"je m'appelle\"},\r\n\t\"touteslespersonnesquejepeuxconnaitre_2025-03-19.wav\":{\"title\":\"toutes les personnes que je peux connaitre\"},\r\n\t\"jenedoispas_2025-03-19.wav\":{\"title\":\"je ne dois pas \"},\r\n\t\"unepersonnamedecin_2025-03-19.wav\":{\"title\":\"une personne a m\u00e9decin \"},\r\n\t\"jepensequeleproblemeprincipalestquejesuipasjeune_2025-03-19.wav\":{\"title\":\"je pense que le probl\u00e8me principal est que je suis pas jeune\"},\t\r\n\t\"versailles_2025-03-19.wav\":{\"title\":\"Versailles\"},\r\n\t\"jepratiquecesactivit\u00e9sdepuis3ans_2025-03-19.wav\":{\"title\":\"je pratique activit\u00e9s depuis 3 ans\"},\r\n\t\"voisinsvoisines_2025-03-19.wav\":{\"title\":\"voisins et voisines\"},\r\n\t\"jesuisarrivenefranceen2024_2025-03-19.wav\":{\"title\":\"je suis arriv\u00e9e en france en 2024\"},\r\n};\r\n\r\n\t\r\nconst addElement=function(parentId, elementType, elementId, contenu,display=\"display:block\") {\r\n\tvar p = document.getElementById(parentId);\r\n\tvar newElement = document.createElement(elementType);\r\n\tnewElement.setAttribute(\"id\", elementId);\r\n\tnewElement.innerHTML = contenu;\r\n\tnewElement.setAttribute(\"style\", display);\r\n\tp.appendChild(newElement);\r\n}\t\r\n\r\n\t\/\/ -------------------------------------------------------\r\n\t\/\/ fonction de chargement de la zone des diff\u00e9rents segments \r\n\t\/\/ -------------------------------------------------------\r\n\tconst chargement_page_segments=function() {\r\n\t\tconst zone=document.getElementById(\"zone_segments\");\r\n\t\tzone.innerHTML=\"\"; \r\n\t\tlet indice=1; \r\n\t\tif (contenu_commentaires==null) contenu_commentaires={};\r\n\t\t\/\/ chargement de la page des diff\u00e9rents \u00e9l\u00e9ments audio\r\n\t\tObject.keys(liste_fichiers).forEach(seg=> {\r\n\t\t\t\/\/ ajout dans la fenetre des commentaires \r\n\t\t\tif (contenu_commentaires[\"ZE_\"+indice+\"_annotation\"]==undefined)\r\n\t\t\t\tcontenu_commentaires[\"ZE_\"+indice+\"_annotation\"]={};\r\n\t\t\tconst volante_enonces=document.getElementById(\"liste_enonces\");\r\n\t\t\tconst enonce=document.createElement(\"a\");\t\t\r\n\t\t\tenonce.setAttribute(\"class\", \"list-group-item list-group-item-action\");\r\n\t\t\tif (Object.keys(contenu_commentaires[\"ZE_\"+indice+\"_annotation\"]).length>0) \r\n\t\t\t\tenonce.setAttribute(\"style\",\"text-decoration:none;color:red;\");\r\n\t\t\telse\r\n\t\t\t\tenonce.setAttribute(\"style\",\"text-decoration:none;color:black;\");\r\n\t\t\tenonce.setAttribute(\"href\",\"#enonce_\"+indice);\r\n\t\t\tenonce.setAttribute(\"id\",\"#enonce_\"+indice);\r\n\t\t\tenonce.indice=indice;\r\n\t\t\tenonce.appendChild(document.createTextNode(indice));\r\n\t\t\t\/\/ permet de commander l'affichage des diff\u00e9rents enonces \r\n\t\t\tenonce.addEventListener(\"click\",function() {\r\n\t\t\t\t\/\/ chargement du contenu \r\n\t\t\t\tfenComments_repositionne(this.indice);\t\t\t\t\r\n\t\t\t})\r\n\t\t\tvolante_enonces.appendChild(enonce);\r\n\t\t\t\r\n\t\t\t\/\/ ajouter un titre \r\n\t\t\tconst segment=document.createElement(\"p\");\r\n\t\t\tsegment.innerHTML=indice +\" \/ \" + liste_fichiers[seg].title;\r\n\t\t\tsegment.setAttribute(\"id\",\"enonce_\"+indice);\r\n\t\t\t\/\/ ajouter l'audio \u00e0 d\u00e9finir sa source \r\n\t\t\tconst fig=document.createElement(\"figure\");\r\n\t\t\tfig.setAttribute(\"class\",\"wp-block-audio\");\r\n\t\t\tconst segment_audio=document.createElement(\"audio\");\r\n\t\t\tsegment_audio.src=\"https:\/\/spgoo.org\/personnalisation\/frapeor\/audio\/\"+ seg;\r\n\t\t\tsegment_audio.controls = 'controls';\t\r\n\t\t\tsegment_audio.type     = 'audio\/mpeg';\r\n\t\t\tfig.appendChild(segment_audio);\r\n\t\t\t\r\n\t\t\t\/\/ ajouter les deux \u00e0 la page \r\n\t\t\tzone.appendChild(segment);\r\n\t\t\tzone.appendChild(fig);\r\n\t\t\t\/\/ defintion de la partie annotation \r\n\t\t\tconst div_exemple=document.createElement(\"div\");\r\n\t\t\tdiv_exemple.setAttribute(\"style\",\"text-align:center;\");\r\n\t\t\tdiv_exemple.setAttribute(\"id\",\"ZE_\"+ indice);\r\n\t\t\t\r\n\t\t\tconst btn=document.createElement(\"button\");\r\n\t\t\tbtn.innerHTML=\"Annotation\";\r\n\t\t\tbtn.setAttribute(\"class\",\"btn btn-success\");\r\n\t\t\tbtn.setAttribute(\"indice\",indice);\r\n\t\t\tdiv_exemple.appendChild(btn);\r\n\t\t\t\/\/ ajout evenementiel pour generation de la zone de saisie \r\n\t\t\tbtn.addEventListener(\"click\", function() {\r\n\t\t\t\tconst ind=this.getAttribute(\"indice\");\r\n\t\t\t\tgeneration_zone_annotation(ind);\r\n\t\t\t});\t\t\t\r\n\t\t\t\r\n\t\t\tzone.appendChild(div_exemple);\r\n\t\t\tindice++;\r\n\t\t})\r\n\t}\r\n\t\r\n\tconst generation_zone_annotation=function(ind, visible=true) {\r\n\t\tconst zone_id=\"ZE_\"+ind;\r\n\t\t\/\/ on verifie ei existe deja : on ferme sinon on cree \r\n\t\tconst Zanno=document.getElementById(zone_id+\"_annotation\");\r\n\t\tif (Zanno==undefined) {\r\n\t\t\tfenComments_repositionne(ind);\r\n\t\t\t\r\n\t\t\t\/\/ creation des elements de saisie dans cette zone \r\n\t\t\tconst ZE=document.getElementById(zone_id);\r\n\t\t\tconst div_annotation=document.createElement(\"div\");\r\n\t\t\tdiv_annotation.setAttribute(\"id\",zone_id+\"_annotation\");\r\n\t\t\tdiv_annotation.setAttribute(\"style\",\"text-align:center;\");\r\n\t\t\tZE.appendChild(div_annotation);\r\n\t\t\t\/\/ trac\u00e9 de la partie graphique pour le melspectrogramme\r\n\t\t\tconst div_melspectrogramme=document.createElement(\"div\");\r\n\t\t\tdiv_melspectrogramme.setAttribute(\"id\",zone_id+\"_spectrogramme\");\r\n\t\t\tdiv_melspectrogramme.setAttribute(\"style\",\"text-align:center;width:1000px;height:280px;\");\r\n\t\t\tdiv_annotation.appendChild(div_melspectrogramme);\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\/\/ creation des deux parties \u00e0 afficher \r\n\t\t\tcreation_graphique_annotation(zone_id+\"_annotation\");\r\n\t\t\t\r\n\t\t\t\/\/ zone de saisie des commentaires \r\n\t\t\tconst comments_Div=document.createElement(\"div\");\r\n\t\t\tcomments_Div.setAttribute(\"class\",\"col col-sm-12\");\r\n\t\t\tcomments_Div.setAttribute(\"id\",\"CommentsDiv_\"+zone_id);\r\n\t\t\tconst comments_Txt=document.createElement(\"textarea\");\r\n\t\t\tcomments_Txt.setAttribute(\"id\",\"CommentsTxt_\"+zone_id);\r\n\t\t\tcomments_Txt.setAttribute(\"cols\",\"145\");\r\n\t\t\tcomments_Txt.setAttribute(\"rows\",\"2\");\r\n\t\t\tcomments_Txt.setAttribute(\"style\",\"font-size:12px;color:black\");\r\n\t\t\tconst comments_Lbl=document.createElement(\"p\");\r\n\t\t\tcomments_Lbl.setAttribute(\"id\",\"CommentsLbl_\"+zone_id);\r\n\t\t\tcomments_Lbl.innerHTML=\"Commentaires\";\r\n\t\t\tcomments_Div.appendChild(comments_Lbl);\r\n\t\t\tcomments_Div.appendChild(comments_Txt);\r\n\r\n\t\t\tdiv_annotation.appendChild(comments_Div);\r\n\t\t\t\r\n\t\t\t\/\/ on ajoute evenmentiel pour la zone de texte : si enter on charge dans la structure \r\n\t\t\tcomments_Txt.addEventListener(\"keypress\",function(e) {\r\n\t\t\t\tif (e.code==\"Enter\") {\r\n\t\t\t\t\t\/\/ on charge dans la structure \tle commentaires\r\n\t\t\t\t\tconst segment=document.getElementById(\"segment_\"+zone_id+\"_annotation\").value.trim();\r\n\t\t\t\t\tconst commentaires=document.getElementById(\"CommentsTxt_\"+zone_id).value.trim();\r\n\t\t\t\t\tcontenu_commentaires[zone_id+\"_annotation\"][segment][\"commentaires\"]=commentaires;\r\n\t\t\t\t\tfenComments_repositionne(ind);\r\n\t\t\t\t}\r\n\t\t\t})\t\r\n\t\t\tcreation_melspectrogramm(ind);\t\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (visible) {\r\n\t\t\t\tconst obj=document.getElementById(\"ZE_\"+ind+\"_spectrogramme\")\r\n\t\t\t\tconst spectro=obj.spectro;\r\n\t\t\t\tspectro.destroy();\r\n\t\t\t\tZanno.remove();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tconst chargement_zone_annotation=function(ind, cle) {\r\n\t\tgeneration_zone_annotation(ind, false);\r\n\t\t\/\/ il faut positionner la cle dans la zone de texre \r\n\t\tconst tArea=document.getElementById(\"segment_ZE_\"+ind+\"_annotation\");\r\n\t\ttArea.value=cle.trim();\r\n\t\t\r\n\t\tconst CArea=document.getElementById(\"CommentsTxt_ZE_\"+ind);\r\n\t\tCArea.value=contenu_commentaires[\"ZE_\"+ind+\"_annotation\"][cle.trim()][\"commentaires\"].trim();\r\n\t\tactivebtns();\r\n\t\t\r\n\t\t\/\/ chargement des curseurs dans la zone graphique \r\n\t\tconst voyelles=contenu_commentaires[\"ZE_\"+ind+\"_annotation\"][cle.trim()][\"voyelles\"];\r\n\t\t\/\/ on recupere le board a partir du select \r\n\t\tconst selectVoyelles=document.getElementById(\"ZE_\"+ind+\"_annotation_box3G_SE\");\r\n\t\tconst board=selectVoyelles.board;\r\n\t\tpositionne_all_curseurs(board, voyelles);\r\n\t}\r\n\t\r\n\tconst creation_graphique_annotation=function(zoneA ) {\r\n\t\tconst Zanno=document.getElementById(zoneA);\r\n\t\t\r\n\t\tconst zone_graphique=document.createElement(\"div\");\r\n\t\tconst zone_graphique_row1=document.createElement(\"div\");\r\n\t\tzone_graphique_row1.setAttribute(\"style\",\"margin: 10px 0px 2px -15px;\");\r\n\t\t\r\n\t\tconst zone_graphique_col1=document.createElement(\"div\");\r\n\t\tzone_graphique_col1.setAttribute(\"class\",\"col col-sm-7\");\r\n\t\tzone_graphique_col1.setAttribute(\"id\",\"ZoneAnalyseBH_\"+zoneA);\r\n\t\t\t\t\r\n\t\tconst zone_box3G=document.createElement(\"div\");\r\n\t\tzone_box3G.setAttribute(\"id\",zoneA+\"_box3G\");\r\n\t\tzone_box3G.setAttribute(\"class\",\"jxgbox\");\r\n\t\tzone_box3G.setAttribute(\"style\",\"background:lightgrey;width:450px; height:485px;\");\r\n\t\r\n\t\tconst zone_graphique_col2=document.createElement(\"div\");\r\n\t\tzone_graphique_col2.setAttribute(\"class\",\"col col-sm-5\");\r\n\t\t\r\n\t\tzone_graphique_col2.appendChild(zone_box3G);\r\n\t\t\t\t\r\n\t\tzone_graphique_row1.appendChild(zone_graphique_col1);\r\n\t\tzone_graphique_row1.appendChild(zone_graphique_col2);\r\n\t\t\r\n\t\tzone_graphique.appendChild(zone_graphique_row1);\r\n\t\tZanno.appendChild(zone_graphique);\r\n\t\tZanno.appendChild(zone_graphique);\r\n\t\t\r\n\t\tconst an=analyse_diag.replace(\/XXX\/g,zoneA);\r\n\t\taddElement(\"ZoneAnalyseBH_\"+zoneA,\"div\",\"analyse_id_\"+zoneA,an);\r\n\t\t\/\/ on colle a la structure graphique les donn\u00e9es stock\u00e9es qu'il faudra copier avant de sauvegarder si l'utilisateur valide\r\n\t\tdocument.getElementById(\"analyse_id_\"+zoneA).data=contenu_commentaires[zoneA]; \/\/JSON.parse(JSON.stringify(contenu_commentaires[zoneA]));\r\n\t\t\r\n\t\ttrace_graphique(zoneA+\"_box3G\");\r\n\t\tchargement_select(zoneA+\"_box3G_SE\");\r\n\t\t\r\n\t}\r\n\t\r\n\t\/\/ ------------------------------------------------------------------------\r\n\t\/\/ positionne la fenetre en fonction de l'\u00e9nonc\u00e9 sur lequel on travaille \r\n\t\/\/ ------------------------------------------------------------------------\r\n\tconst fenComments_repositionne=function(indice) {\r\n\t\t\r\n\t\tdocument.querySelectorAll(\"a.list-group-item\").forEach(e=>e.style.backgroundColor=\"#fff\");\r\n\t\tconst ZO=document.getElementById(\"#enonce_\"+indice);\r\n\t\tZO.style.background=\"lightblue\";\r\n\t\tZO.scrollIntoView()\r\n\t\tconst title=document.getElementById(\"contenu_title\");\r\n\t\ttitle.innerHTML=Object.values(liste_fichiers)[indice-1][\"title\"];\r\n\t\t\r\n\t\t\/\/ il faut charger le contenu si existe \r\n\t\tconst contenu=document.getElementById(\"contenu_detail\");\r\n\t\tconst detail=contenu_commentaires[\"ZE_\"+indice+\"_annotation\"];\r\n\t\tlet chaine=\"\";\r\n\t\tObject.keys(detail).forEach(element=> {\r\n\t\t\tchaine+=\"<div style='display:flex;justify-content:space-between'>\"\r\n\t\t\tchaine+=\"<p style='cursor:pointer;color:red;' class='annotations'  ref='\"+indice+\"' >\"+element+\"<\/p>\";\r\n\t\t\tchaine+=\"<button onclick=\\\"supprime_entre(\"+indice+\",\\'\"+element+\"\\');\\\" class='btn btn-default'><i class='fa fa-trash'><\/i><\/button>\";\r\n\t\t\tchaine+=\"<\/div>\"\r\n\t\t\t\/\/ attention event sur le click pour recharger le contenu dans la fenetre de mise a jour \r\n\t\t\tObject.keys(detail[element]).forEach(rubrique=>{\t\t\t\t\r\n\t\t\t\tif (rubrique==\"voyelles\") {\r\n\t\t\t\t\tchaine+=\"<li>\"+rubrique+\"<\/li>\";\t\r\n\t\t\t\t\tObject.keys(detail[element][rubrique]).forEach(voyelle=> {\r\n\t\t\t\t\t\tchaine+=\"<ul>\"+voyelle+\"\/\/\"+detail[element][rubrique][voyelle]+ \"<\/ul>\";\t\r\n\t\t\t\t\t});\r\n\t\t\t\t}else {\r\n\t\t\t\t\tchaine+=\"<li>\"+rubrique+\"\/\/\"+detail[element][rubrique]+ \"<\/li>\";\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t})\t\t\t   \r\n\t\t})\r\n\t\tcontenu.innerHTML=chaine; \/\/ JSON.stringify(contenu_commentaires[\"ZE_\"+indice+\"_annotation\"]);\r\n\t\t\/\/ affectation evenementiel sur la classe annotations\r\n\t\tconst cl_annotations=document.querySelectorAll(\".annotations\");\r\n\t\tcl_annotations.forEach((anno)=> {\r\n\t\t\t\tanno.addEventListener(\"click\",function(e) {\r\n\t\t\t\t\tconst ref=this.getAttribute(\"ref\");\r\n\t\t\t\t\tchargement_annotations(e.target.innerText, ref);\r\n\t\t\t\t})\r\n\t\t})\r\n\t\tif (chaine!=\"\") {\r\n\t\t\tconst enonce=document.getElementById(\"#enonce_\"+indice);\r\n\t\t\tenonce.style.color=\"red\";\r\n\t\t}\r\n\t}\r\n\t\r\n\tconst chargement_annotations=function(select_annotation, ind ) {\r\n\t\t\/\/console.log(\"chargement_annotations\", select_annotation, ind);\r\n\t\tchargement_zone_annotation(ind, select_annotation);\r\n\t}\r\n\t\r\n\tconst supprime_entre=function(indice,element) {\r\n\t\tconsole.log(\"suppression\", indice, element );\r\n\t\tif (contenu_commentaires[\"ZE_\"+indice+\"_annotation\"][element]!=undefined) \r\n\t\t\tdelete contenu_commentaires[\"ZE_\"+indice+\"_annotation\"][element];\r\n\t\tfenComments_repositionne(indice);\r\n\t}\r\n\t\r\n\tconst sauvegarde_commentaires=function() {\r\n\t\tconsole.log(\"sauvegarde des commentaires dans localstorage\");\r\n\t\tsauvegarde_data(contenu_commentaires);\r\n\t}\r\n\t\r\n\tfunction export_commentaires(data, saveAs=\"frapeor\"){\r\n\t  const stringified = JSON.stringify(contenu_commentaires, null, 2); \r\n\t  const blob = new Blob([stringified], {type: \"application\/json\"});\r\n\t  const url = URL.createObjectURL(blob);\r\n\r\n\t  var a = document.createElement('a');\r\n\t  a.download = saveAs + '.json';\r\n\t  a.href = url;\r\n\t  a.id = saveAs;\r\n\t  document.body.appendChild(a);\r\n\t  a.click();\r\n\t  document.querySelector('#' + a.id).remove();\r\n\t} \t\r\n\t\r\n\t\/\/ par defaut chargement des diff\u00e9rents segments \u00e0 partir de liste_fichiers \r\n\tchargement_page_segments();\r\n\r\n\t\r\n\/\/ activation du drag de la fenetre des commentaires \r\ndragElement(document.getElementById(\"mydivComments\"));\t\r\n\t\r\n\r\nfunction dragElement(elmnt) {\r\n  var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\r\n  if (document.getElementById(elmnt.id + \"header\")) {\r\n    \/\/ if present, the header is where you move the DIV from:\r\n    document.getElementById(elmnt.id + \"header\").onmousedown = dragMouseDown;\r\n  } else {\r\n    \/\/ otherwise, move the DIV from anywhere inside the DIV:\r\n   elmnt.onmousedown = dragMouseDown;\r\n  }\r\n\r\n  function dragMouseDown(e) {\r\n    e = e || window.event;\r\n    e.preventDefault();\r\n    \/\/ get the mouse cursor position at startup:\r\n    pos3 = e.clientX;\r\n    pos4 = e.clientY;\r\n    document.onmouseup = closeDragElement;\r\n    \/\/ call a function whenever the cursor moves:\r\n    document.onmousemove = elementDrag;\r\n  }\r\n\r\n  function elementDrag(e) {\r\n    e = e || window.event;\r\n    e.preventDefault();\r\n    \/\/ calculate the new cursor position:\r\n    pos1 = pos3 - e.clientX;\r\n    pos2 = pos4 - e.clientY;\r\n    pos3 = e.clientX;\r\n    pos4 = e.clientY;\r\n    \/\/ set the element's new position:\r\n    elmnt.style.top = (elmnt.offsetTop - pos2) + \"px\";\r\n    elmnt.style.left = (elmnt.offsetLeft - pos1) + \"px\";\r\n  }\r\n\r\n  function closeDragElement() {\r\n    \/\/ stop moving when mouse button is released:\r\n    document.onmouseup = null;\r\n    document.onmousemove = null;\r\n  }\r\n}\t\t\t\r\n\t\r\nconst random = (min, max) => Math.random() * (max - min) + min\r\nconst randomColor = () => `rgba(${random(0, 255)}, ${random(0, 255)}, ${random(0, 255)}, 0.2)`\r\n\r\n\/\/ ----------------------------------------------------------\r\n\/\/ Partie Wavesufer : exploration trac\u00e9 melspectrogramme \r\n\/\/ ----------------------------------------------------------\r\n\r\nconst creation_melspectrogramm=function(ind) {\r\n\tconst regions_ref1 = WaveSurfer.Regions.create(); \r\n\t\r\n\tconst bottomTimeline_1 = WaveSurfer.Timeline.create({\r\n\t  height: 15,\r\n\t  timeInterval: 0.1,\r\n\t  primaryLabelInterval: 0.2,\r\n\t  style: {\r\n\t\tfontSize: '16px',\r\n\t\tcolor: '#6A3274',\r\n\t  },\r\n\t})\r\n\t\r\n\t\/\/ Create a WaveSurfer instance\r\n\tconst ws_ref1 = WaveSurfer.create({\r\n\t  height: 100,\r\n\t  minPxPerSec: 1,\r\n\t  barWidth: 2,\r\n\t  barRadius: 2,\r\n\t  barGap: 1,\r\n\t  container: '#ZE_'+ind+'_spectrogramme',\r\n\t  waveColor: 'rgb(200, 0, 200)',\r\n\t  progressColor: 'rgb(100, 0, 100)',\r\n\t  mediaControls: false,\r\n\t  interact: false,\r\n\t  url: \"https:\/\/spgoo.org\/personnalisation\/frapeor\/audio\/\"+ Object.keys(liste_fichiers)[ind-1],\r\n\t  plugins: [regions_ref1,bottomTimeline_1],\r\n\t})\r\n\tlet spectro_ref1=null; \r\n\tws_ref1.registerPlugin(\r\n\t\tspectro_ref1=creation_spectro(\"mel\")\r\n\t)\r\n\t\/\/ on attache le descripteur de l'objet \u00e0 la ressource graphique pour le supprimer par la suite\r\n\t\/\/ proprement avec la fonction destroy sinon erreur dans le navigateur \r\n\tconst obj_graphe=document.getElementById(\"ZE_\"+ind+\"_spectrogramme\");\r\n\tobj_graphe.spectro=spectro_ref1;\r\n\tajoute_regions(ws_ref1,regions_ref1,[\"s\u00e9lection\"]);\r\n\tactive_region(ws_ref1,regions_ref1);\r\n}\r\n\r\n\r\nconst creation_spectro=function(mode) {\r\n  console.log(\"retrace spectro\",mode);\r\n  return WaveSurfer.Spectrogram.create({\r\n    labels: true,\r\n\tlabelsColor :\"yellow\",  \r\n    height: 150,\r\n    splitChannels: false,\r\n    \/\/scale: 'mel', \/\/ or 'linear', 'logarithmic', 'bark', 'erb'\r\n    scale: mode,\/\/ 'logarithmic', 'bark', 'erb'\r\n    frequencyMax: 8000,\r\n    frequencyMin: 0,\r\n    fftSamples: 512,\r\n    labelsBackground: 'rgba(25, 25, 25, 0.1)',\r\n\t windowFunc :\"lanczoz\", \r\n  });\r\n}\r\n\t\r\n\r\n\/\/ --------------------------------------------------------------\r\n\/\/ Create some regions at specific time ranges\r\n\/\/ avec en param\u00e8tres les syllabes a positionner sur le graphe\r\n\/\/ --------------------------------------------------------------\r\nconst ajoute_regions=function(WS, Regions, syllabes=null) {\r\n  const duration=WS.getDuration(); \/\/ Duree total du signal\r\n  let debut=0;\r\n  const pas=2.0\/(syllabes.length+2);\r\n  console.log(duration,pas, syllabes);\r\n  let i=1;\r\n  WS.on('decode', ()=> {\r\n    syllabes.forEach(syll => {\r\n\t\tconst p=document.createElement(\"span\");\r\n        p.innerHTML=syll;\r\n        p.setAttribute(\"style\",\"font-size:10px;color:lightgreen;margin:5px;\");\r\n        Regions.addRegion({\r\n          start: debut,\r\n          end: debut+pas,\r\n          content: p,\r\n          color: randomColor(),\r\n          drag: true,\r\n          resize: true,\r\n        })\r\n        debut=debut+pas;\r\n        i++;\r\n        \r\n    })\r\n  })\r\n}\r\n\r\n\/\/ Loop a region on click\r\nlet loop = false\r\n\r\nconst active_region=function(WS,Regions){\r\n{\r\n  let activeRegion = null\r\n  Regions.on('region-in', (region) => {\r\n    activeRegion = region\r\n  })\r\n  Regions.on('region-out', (region) => {\r\n    if (activeRegion === region) {\r\n      if (loop) {\r\n        region.play()\r\n      } else {\r\n        activeRegion = null\r\n      }\r\n    }\r\n  })\r\n  Regions.on('region-clicked', (region, e) => {\r\n    e.stopPropagation() \/\/ prevent triggering a click on the waveform\r\n    activeRegion = region\r\n    region.play(true)\r\n    region.setOptions({ color: randomColor() })\r\n  })\r\n  \/\/ Reset the active region when the user clicks anywhere in the waveform\r\n  WS.on('interaction', () => {\r\n    activeRegion = null\r\n  })\r\n}\r\n}\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n<\/script>\r\n\n\n<script src=\"https:\/\/d3js.org\/d3.v6.min.js\"><\/script>\r\n\r\n<style>\r\n.soustheme svg {\r\n\tcursor: pointer;\r\n}\r\n.btn-formulaire {\r\n\t\theight:48px;\r\n}\r\n\r\n.align-items-center {\r\n  -ms-flex-align: center!important;\r\n  align-items: center!important;\r\n}\r\n\t\r\n.zone_diagnostic {\r\n\twidth:100%;\r\n\tbackground: #00c2a9 ; \/*rgb(185,182,182);*\/\r\n\tborder-color: blue;\r\n\tborder-style: none;\r\n\t\/* margin:10px 0px 2px 0px;*\/\r\n\tborder-top-left-radius: 15px;\r\n\tborder-top-right-radius: 15px;\r\n}\t\t\r\n\t\r\n<\/style>\r\n<script>\r\nconst analyse_diag=\r\n'<div id=\"zone_diagnostic_XXX\" style=\"display:block;\" > '+\r\n'\t<div class=\"zone_diagnostic\">'+\r\n'\t\t<div class=\"row\" >'+\r\n'\t\t   <h4 style=\"color:black;text-align:center;\">Saisie du diagnostic<\/h4>'+\r\n'\t\t   <button style=\"position:absolute;top:20px;right:20px;\" class=\"btn btn-primary\" onclick=\"ajouter_commentaire(\\'XXX\\');\">Add<\/button>'+\r\n'  \t\t   <label>Part:<\/label><input title=\"Saisir la partie \u00e0 caract\u00e9riser suivi de clique sur add\" id=\"segment_XXX\" style=\"font-size:12px;color:black\"><\/input>'+\r\n'\t\t<\/div>'+\t  \r\n'\t<\/div>'+\r\n'\t<div id=\"zone_criteres_XXX\" style=\"display:block;font-size:12pt;background:#7fb3d5;height:400px;margin:2px;border-bottom-left-radius: 15px;border-bottom-right-radius: 15px;\" >'+\r\n'\t\t<div class=\"row col-sm-12\" style=\"display:block;font-size:12pt;\";>'+\r\n'\t\t\t<div class=\"col-sm-3\" >'+\r\n'\t\t\t\t\t<div class=\"btn-group-vertical\" role=\"group\"  aria-label=\"Vertical button group\">'+\r\n'\t\t\t\t\t\t<br\/>'+\r\n'\t\t\t\t\t\t<div style=\"text-align:center;width:120px;height:55px;background-color:white\">'+\r\n'\t\t\t\t\t\t\t<button style=\"vertical-align:text-top;width: 120px;font-size:12px\" disabled '+\r\n'\t\t\t\t\t\t\t\tclass=\"btn-formulaire btn-success ml-0\"'+\r\n'\t\t\t\t\t\t\t\tonclick=\"affiche_formulaire(\\'phonemique\\',\\'XXX\\');\">Seg\/Phon\u00e9mique'+\r\n'\t\t\t\t\t\t\t<\/button>'+\r\n'\t\t\t\t\t\t<\/div>'+\r\n\t  '\t\t\t\t\t<br\/>'+\r\n'\t\t\t\t\t\t<div style=\"text-align:center;width:120px;height:55px;background-color:white\">'+\r\n'\t\t\t\t\t\t\t<button style=\"vertical-align:text-top;width:120px;font-size:12px\" id=\"btn_2\" disabled'+\r\n'\t\t\t\t\t\t\t\tclass=\"btn-formulaire btn-success ml-0\"'+\r\n'\t\t\t\t\t\t\t\tonclick=\"affiche_formulaire(\\'syllabique\\',\\'XXX\\');\">Seg\/Syllabique'+\r\n'\t\t\t\t\t\t\t<\/button>'+\r\n'\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t<hr\/>'+\r\n'\t\t\t\t\t\t<div style=\"text-align:center;width:120px;height:55px;background-color:white\">'+\r\n'\t\t\t\t\t\t\t<button style=\"vertical-align:text-top;width:120px;font-size:12px\" id=\"btn_2\" disabled '+\r\n'\t\t\t\t\t\t\t\tclass=\"btn-formulaire btn-success ml-0\" '+\r\n'\t\t\t\t\t\t\t\tonclick=\"affiche_formulaire(\\'suprasegmental\\',\\'XXX\\');\">SupraSegmental'+\r\n'\t\t\t\t\t\t\t<\/button>'+\r\n'\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t<\/div>'+\r\n'\t\t\t<\/div> '+\r\n'\t\t\t<div class=\"col-sm-9\" >'+\r\n'\t\t\t\t\t\t<div class=\"col col-sm-12\" style=\"border-style:inset;\">'+\r\n'\t\t\t\t\t\t\t<div class=\"d-flex justify-content-center\">\t'+\r\n'\t\t\t\t\t\t\t\t<h4 id=\"theme_XXX\" >Th\u00e8me<\/h4>'+\r\n'\t\t\t\t\t\t\t\t<div class=\"row\" style=\"width:100%\">'+\r\n'\t\t\t\t\t\t\t\t\t<div class=\"col-sm-12\" style=\"color:black;font-size:10px;\"  '+\r\n'\t\t\t\t\t\t\t\t\t\t id=\"liste_criteres_XXX\">'+\r\n'\t\t\t\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t<div class=\"col col-sm-12\" '+\r\n'\t\t\t\t\t\t\t style=\"display:none;border-style:inset;\" id=\"Affiche_ss_critere_XXX\">\t\t'+\r\n'\t\t\t\t\t\t\t<div class=\"row\" style=\"width:100%\">'+\r\n'\t\t\t\t\t\t\t\t<div class=\"col-sm-12\" '+\r\n'\t\t\t\t\t\t\t\t\t style=\"color:black;font-size:10px;\"  id=\"liste_sous_criteres_XXX\">'+\r\n'\t\t\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t\t\t\t<\/div>'+\r\n'\t\t\t <\/div> '+\r\n'\t\t <\/div>'+\r\n' <\/div>  '+\r\n'<\/div> ';\r\n\r\n\r\nlet protocole={};\r\nprotocole[\"phonemique\"]=[\"Voyelle\",\"Consonne\",\"Semi-voyelle\",\"Groupe consonantique\"];\r\nprotocole[\"syllabique\"]=[\"Enchainement consonantique\",\"Enchainement vocalique\",\"Hiatus (r\u00e9alisation de coup de glotte)\",\"Syn\u00e9r\u00e8se\/glissement\/tri-\/di-phtonagaison\",\"Liaison\",\"Elision\"];\r\nconst complements=[\"Voisement\",\"D\u00e9voisement\",\"Nasalisation\",\"D\u00e9nasalisation\",\"Aspiration\",\"Labialisation\",\"D\u00e9labialisation\",\"Zozotement ou substitution\"]\r\nprotocole[\"suprasegmental\"]=[\"Intonation\",\"Accentuation\/\u00e9galit\u00e9 syllabique\",\"D\u00e9saccentuation\",\"Dur\u00e9e\" ];\r\n\r\nvar dx=40;\r\nvar dy=50;\r\nvar margin = ({top: 10, right: 120, bottom: 10, left: 10});\r\nvar width=400;\r\n\r\nlet G_theme=\"\"; \r\nlet resultats_diagnostic={};\r\nresultats_diagnostic[\"resultats\"]=protocole;\r\n\r\n\t\/\/ affiche le contenu des \u00e9l\u00e9ments dans liste_criteres\r\nconst affiche_formulaire=function(theme, XXX){\r\n\tdocument.getElementById(\"liste_criteres_\"+XXX).innerHTML=\"\";\r\n\tdocument.getElementById(\"theme_\"+XXX).innerHTML=theme;\r\n\tconst segment=document.getElementById(\"segment_\"+XXX).value.trim();\r\n\tG_theme=theme;\r\n\t\/\/ generation des objets de selection \r\n\tlet chaine=\"\";\r\n\tlet num=0;\r\n\tlet theme_present=false;\r\n\tif (contenu_commentaires[XXX][segment][theme]!=undefined ){\r\n\t\tconsole.log(\"theme trouve\", theme);\r\n\t\ttheme_present=true;\r\n\t}\r\n\tfor (element of protocole[theme]) {\r\n\t\tlet id=XXX + '_'+theme+\"_\"+num;\r\n\t\tlet element_present=\"\";\r\n\t\tif (theme_present) {\r\n\t\t\tif (contenu_commentaires[XXX][segment][theme].indexOf(element)!=-1){\r\n\t\t\t\telement_present=\"checked\";\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tchaine+=\"<div class='row col-sm-12 soustheme'>\";\r\n\t\tchaine+=\"<input class='form-check-input_\"+XXX+\"' attrib='\"+element+\"' type='radio' \"+element_present+\" name=\"+XXX+\"'choix_\"+theme+\"' id='\"+id+\"' \/>\"+\r\n  \t\t\t\"\t<label class='form-check-label' for='\"+id+\"'>\"+ \telement +\r\n  \t\t    \"\t<\/label>\";\r\n\t\tchaine+=\"<\/div>\";\r\n\t\tnum+=1;\r\n\t}\r\n\taddElement(\"liste_criteres_\"+XXX, \"div\", \"critere_1_\"+XXX, chaine);\r\n\tdocument.getElementById(\"liste_sous_criteres_\"+XXX).innerHTML=\"\";\r\n\tdocument.getElementById(\"Affiche_ss_critere_\"+XXX).style.display=\"none\";\r\n\tlet num2=0;\r\n\tif (theme==\"phonemique\") {\r\n\t\tlet chaine=\"\";\r\n\t\tfor (element of complements) {\r\n\t\t\tlet id=XXX +'_compl_phonemique_'+num2;\r\n\t\t\tlet element_present=\"\";\r\n\t\t\tif (theme_present) {\r\n\t\t\t\tif (contenu_commentaires[XXX][segment][theme].indexOf(element)!=-1){\r\n\t\t\t\t\telement_present=\"checked\";\r\n\t\t\t\t}\r\n\t\t\t}\t\t\t\r\n\t\t\tchaine+=\"<div class='row col-sm-12'>\";\r\n\t\t\tchaine+=\"<input class='form-check-ss-input_\"+XXX+\"' attrib='\"+element+\"' type='radio' \"+element_present+\" name=\"+XXX+\"'compl_phonemique' id='\"+id+\"' \"+\r\n\t  \t\t\t\"\t<label class='form-check-label' for='\"+id+\"'>\"+ \telement +\r\n\t  \t\t    \"\t<\/label>\";\r\n\t\t\tchaine+=\"<\/div>\";\r\n\t\t\t\r\n\t\t\tnum2+=1;\r\n\t\t}\t\r\n\t\taddElement(\"liste_sous_criteres_\"+XXX,\"div\",\"critere_2_\"+XXX, chaine);\r\n\t\tdocument.getElementById(\"Affiche_ss_critere_\"+XXX).style.display=\"block\";\r\n\t}\r\n\t\/\/ pour la partie des crit\u00e8res principaux \r\n\tdocument.querySelectorAll(\".form-check-input_\"+XXX).forEach(inp=> {\r\n\t\tinp.addEventListener(\"click\", function(e) {\r\n\t\t\tlet data=document.getElementById(\"analyse_id_\"+XXX).data;\r\n\t\t\tlet segment=document.getElementById(\"segment_\"+XXX).value.trim();\r\n\t\t\tdata[segment][theme]=this.getAttribute(\"attrib\");\/\/e.target.id;\r\n\t\t\tlet tab=XXX.split(\"_\");\r\n\t\t\tfenComments_repositionne(tab[1]);\r\n\t\t\t\/\/ il faut recuperer data et positionner la valeur en fonction du theme \r\n\t\t})\r\n\t});\r\n\t\/\/ pour la partie des sous-crit\u00e8res uniquemant pour phonemique\r\n\tdocument.querySelectorAll(\".form-check-ss-input_\"+XXX).forEach(inp=> {\r\n\t\tinp.addEventListener(\"click\", function(e) {\r\n\t\t\tlet data=document.getElementById(\"analyse_id_\"+XXX).data;\r\n\t\t\tlet segment=document.getElementById(\"segment_\"+XXX).value.trim();\r\n\t\t\tif (data[segment][theme]==\"\") {\r\n\t\t\t\talert(\"il faut s\u00e9lectionner un crit\u00e8re phonemique avant\");\r\n\t\t\t\tthis.checked=false;\r\n\t\t\t\treturn false; \r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (data[segment][theme].indexOf(\"[\")!=-1) {\r\n\t\t\t\tconst chaine=data[segment][theme].substr(0,data[segment][theme].indexOf(\"[\"));\r\n\t\t\t\tdata[segment][theme]=chaine + \"[\"+ this.getAttribute(\"attrib\")+\"]\";\r\n\t\t\t}else {\r\n\t\t\t\tdata[segment][theme]+=\"[\"+ this.getAttribute(\"attrib\")+\"]\";\r\n\t\t\t}\r\n\t\t\t\/\/data[segment][theme]=this.getAttribute(\"attrib\");\r\n\t\t\tlet tab=XXX.split(\"_\");\r\n\t\t\tfenComments_repositionne(tab[1]);\r\n\t\t})\r\n\t});\r\n\t\r\n}\r\n\r\n\r\n\/\/ exploitation de la variable annotations_phono_courante poru listes les Mots et les afficher \r\n\/\/ ainsi que les segments \r\nconst affichage_des_defauts=function() {\r\n\tconst sel=document.getElementById(\"mots_\");\r\n\tsel.innerHTML=\"\";\r\n\tlet opt=document.createElement(\"option\");\r\n\topt.value=\"-1\";\r\n\topt.text=\"S\u00e9lectionnez une expression\";\r\n\tsel.appendChild(opt);\r\n\tfor (let mot in annotations_phono_courante.Mots)\r\n\t\t{\r\n\t\t\tlet opt=document.createElement(\"option\");\r\n\t\t\topt.value=mot;\r\n\t\t\topt.text=mot;\r\n\t\t\tsel.appendChild(opt);\r\n\t\t\t\r\n\t\t}\r\n}\r\nconst activebtns=function() {\r\n\tbtns=document.querySelectorAll(\".btn-formulaire.btn-success.ml-0\");\r\n\tbtns.forEach(btn=>btn.disabled=false);\r\n}\r\nconst desactivebtns=function() {\r\n\tbtns=document.querySelectorAll(\".btn-formulaire.btn-success.ml-0\");\r\n\tbtns.forEach(btn=>btn.disabled=true);\r\n}\r\n\r\n\/\/ --------------------------------------------------------\r\n\/\/ Ajouter les commentaires dans la structure de donn\u00e9es \r\n\/\/ --------------------------------------------------------\r\nconst ajouter_commentaire=function(ZE_indice){\r\n\t\/\/ v\u00e9rifier si il y a une chaine de caract\u00e8res dans la zone de saisie \r\n\tif (document.getElementById(\"segment_\"+ZE_indice).value==\"\"){\r\n\t\t\talert(\"Veuillez saisir dans la zone de texte, une chaine de caract\u00e8res !!!!\");\r\n\t\t\treturn ; \r\n\t}\r\n\t\/\/ verifier si existe dej\u00e0 : ne rien faire \r\n\t\r\n\tconst cle_texte=document.getElementById(\"segment_\"+ZE_indice).value;\r\n\tif (contenu_commentaires[ZE_indice][cle_texte.trim()]!=undefined)\r\n\t\treturn ;\r\n\t\r\n\t\r\n\tcontenu_commentaires[ZE_indice][cle_texte]={\"phonemique\":\"\", \"syllabique\":\"\",\"suprasegmental\":\"\",\"voyelles\":{},\"commentaires\":\"\"};\r\n\tconst tab=ZE_indice.split(\"_\");\r\n\t\/\/ il faut reinitialiser la liste du board  des curseurs \r\n\tconst selectVoyelles=document.getElementById(ZE_indice+\"_box3G_SE\");\r\n\tconst board=selectVoyelles.board;\r\n\terase_all_curseurs(board);\r\n\t\r\n\tfenComments_repositionne(tab[1]);\r\n\tactivebtns();\r\n}\r\n\r\n\r\n\r\n<\/script>\r\n\r\n\n\n<script type=\"text\/javascript\">\r\n\r\nconst voyelles={\"voyelle\":{},\r\n\t\t\t\t\"i\":{\"couleur\":\"#cd6155\"},\"y\":{\"couleur\":\"#ec7063 \"},\"u\":{\"couleur\":\"#af7ac5 \"},\r\n\t\t\t\t\"e\":{\"couleur\":\"#5dade2 \"},\"\u00f8\":{\"couleur\":\"#48c9b0\"},\"o\":{\"couleur\":\"#f5b041\"},\r\n\t\t\t\t\"\u03b5\":{\"couleur\":\"#5499c7\"},\"\u0153\":{\"couleur\":\"#45b39d\"},\"\u0254\":{\"couleur\":\"#dc7633\"},\r\n\t\t\t\t\"a\":{\"couleur\":\"#58d68d\"},\"\u0251\":{\"couleur\":\"#52be80\"}};\r\n\t\t\t\t\/\/ \"\u025b\u0303\":{\"couleur\":\"#5dade2\"},,\"\u0153\u0303\",,\"u\":{\"couleur\":\"#f4d03f\"},,};\t\r\n\r\n\t\r\nconst trace_graphique=function( box3G) {\t\r\n\r\n\tJXG.Options.text.cssDefaultStyle = 'font-family:KaTeX_Main, serif;font-size:4 vmin';\r\n\tJXG.Options.text.useMathJax = true;\t\r\n\tJXG.Options.line.highlightStrokeWidth = 5;\r\n\tconst SIZE=6;\r\n\r\n\tconst board3 = JXG.JSXGraph.initBoard(box3G, {pan: {enabled:false},boundingbox: [-2,100, 100,-10], axis:false,\r\n\twithLines:false,defaultAxes: {    x: { ticks: {visible: true} },    y: { ticks: {visible: true} }  },showNavigation:false,showCopyright:false});\r\n\tboard3.renderer.container.style.backgroundColor='#E5E4E2';\r\n\t\r\n\t\/*const b3_v1_p1=board3.create(\"point\",[14,80],{fixed:true,visible:false,highlight:false});\r\n\tconst b3_v1_p2=board3.create(\"point\",[86,10],{fixed:true,visible:false});\r\n\tconst seg_vertical1_1=board3.create(\"arrow\",[b3_v1_p1,b3_v1_p2],{highlight:false});\r\n\tconst seg_vertical1_2=board3.create(\"arrow\",[b3_v1_p2,b3_v1_p1],{highlight:false});\r\n\r\n\tconst b3_v2_p1=board3.create(\"point\",[12,10],{fixed:true,visible:false,highlight:false});\r\n\tconst b3_v2_p2=board3.create(\"point\",[86,80],{fixed:true,visible:false});\r\n\tconst seg_vertical2_1=board3.create(\"arrow\",[b3_v2_p1,b3_v2_p2],{highlight:false});\r\n\tconst seg_vertical2_2=board3.create(\"arrow\",[b3_v2_p2,b3_v2_p1],{highlight:false});*\/\r\n\r\n\tconst b3_v1_p1=board3.create(\"point\",[12,10],{fixed:true,visible:false,highlight:false});\r\n\tconst b3_v1_p2=board3.create(\"point\",[12,75],{fixed:true,visible:false});\r\n\tconst seg_vertical1_1=board3.create(\"arrow\",[b3_v1_p1,b3_v1_p2],{highlight:false});\r\n\tconst seg_vertical1_2=board3.create(\"arrow\",[b3_v1_p2,b3_v1_p1],{highlight:false});\r\n\t\r\n\tconst b3_h1_p1=board3.create(\"point\",[5,50],{fixed:true,visible:false,highlight:false});\r\n\tconst b3_h1_p2=board3.create(\"point\",[86,50],{fixed:true,visible:false});\r\n\tconst seg_horizontal_1=board3.create(\"arrow\",[b3_h1_p1,b3_h1_p2],{highlight:false});\r\n\tconst seg_horizontal_2=board3.create(\"arrow\",[b3_h1_p2,b3_h1_p1],{highlight:false});\r\n\t\r\n\t\/\/ mise en place des lettres \r\n\tconst b3_p_i=board3.create(\"point\",[18,80],{name:\"[i]\",fixed:true,visible:true,size:SIZE});\r\n\tconst b3_p_e=board3.create(\"point\",[22,60],{name:\"[e]\",fixed:true,visible:true,size:SIZE});\r\n\tconst b3_p_ee=board3.create(\"point\",[28,40],{name:\"[\u03b5]\",fixed:true,visible:true,size:SIZE});\r\n\t\/\/const b3_veee=board3.create(\"point\",[26,36],{name:\"$\\\\text{[\u025b\u0303]}$\",fixed:true,label:{left:\"10px\"},size:SIZE});\r\n\r\n\tconst b3_y=board3.create(\"point\",[40,80],{name:\"[y]\",fixed:true,label:{left:\"10px\"},size:SIZE});\r\n\tconst b3_vide=board3.create(\"point\",[43,60],{name:\"[\u00f8]\",fixed:true,label:{left:\"10px\"},size:SIZE});\r\n\tconst b3_eo=board3.create(\"point\",[47,40],{name:\"[\u0153]\",fixed:true,label:{left:\"10px\"},size:SIZE});\r\n\t\/\/const b3_eo_nasal=board3.create(\"point\",[50,36],{name:\"$\\\\text{[\u0153\u0303]}$\",fixed:true,label:{left:\"10px\"},size:SIZE});\r\n\tconst b3_p_v3=board3.create(\"point\",[38,20],{name:\"[a]\",fixed:true,size:SIZE});\r\n\r\n\tconst b3_p_u=board3.create(\"point\",[82,80],{name:\"[u]\",fixed:true,visible:true,size:SIZE});\r\n\tconst b3_p_o=board3.create(\"point\",[76,60],{name:\"[o]\",fixed:true,visible:true,size:SIZE});\r\n\tconst b3_p_c=board3.create(\"point\",[70,40],{name:\"[\u0254]\",fixed:true,visible:true,size:SIZE});\r\n\t\/\/const b3_p_c_nasal=board3.create(\"point\",[74,36],{name:\"$\\\\text{[\u0254\u0303]}$\",fixed:true,visible:true,size:SIZE});\r\n\tconst b3_a=board3.create(\"point\",[65,20],{name:\"[\u0251]\",fixed:true,size:SIZE,label:{fontsize:14,autoPosition: false,offset:[-20, 4],fillcolor:\"black\"}});\r\n\t\/\/const b3_a_nasal=board3.create(\"point\",[65,15],{name:\"$\\\\text{[\u0251\u0303]}$\",fixed:true,highlight:false,size:SIZE,label:{fontsize:14,autoPosition: false, offset:[-20, 4],fillcolor:\"black\"}});\r\n\r\n\tconst t_anterieur=board3.create(\"text\",[25,90,\"$ant\u00e9rieures$\"],{ fontsize:14,fixed:true,highlight:false});\r\n\tconst t_posterieur=board3.create(\"text\",[60,90,\"$posterieures$\"],{ fontsize:14,fixed:true,highlight:false});\r\n\tconst t_etiree=board3.create(\"text\",[25,-2,\"$\u00e9tir\u00e9es$\"],{ fontsize:14,fixed:true,highlight:false});\r\n\tconst t_arrondie=board3.create(\"text\",[64,-2,\"$arrondies$\"],{ fontsize:14,fixed:true,highlight:false});\r\n\r\n\tconst b3_cbTp = board3.create(\"text\",[8,80, '$\\\\text{T+}$'],{fontsize:14,fixed:true,highlight:false});\r\n\tconst b3_cbTm = board3.create(\"text\",[8,8, '$\\\\text{T-}$'],{fontsize:14,fixed:true,highlight:false});\r\n\t\r\n\tconst b3_cbTp_1 = board3.create(\"text\",[6,45, '$\\\\text{C+}$'],{fontsize:14,fixed:true,highlight:false});\r\n\tconst b3_cbTm_1 = board3.create(\"text\",[88,45, '$\\\\text{C-}$'],{ fontsize:14,fixed:true,highlight:false});\r\n\r\n\tconst p1_arc_h_g=board3.create(\"point\",[18,86],{name:\"\",fixed:true,visible:false});\r\n\tconst p2_arc_h_g=board3.create(\"point\",[50,86],{name:\"\",fixed:true,visible:false});\r\n\tconst p3_arc_h_g=board3.create(\"point\",[82,86],{name:\"\",fixed:true,visible:false});\r\n\tconst p_arc_h_g_=board3.create(\"point\",[34,20],{visible:false})\r\n\tconst arc_h_g = board3.create('arc', [p_arc_h_g_, p2_arc_h_g,p1_arc_h_g]);\r\n\tconst p_arc_h_d_=board3.create(\"point\",[66,20],{visible:false})\r\n\tconst arc_h_d = board3.create('arc', [p_arc_h_d_, p3_arc_h_g,p2_arc_h_g]);\r\n\r\n\tconst p1_arc_b_g=board3.create(\"point\",[18,5],{name:\"\",fixed:true,visible:false});\r\n\tconst p2_arc_b_g=board3.create(\"point\",[50,5],{name:\"\",fixed:true,visible:false});\r\n\tconst p3_arc_b_g=board3.create(\"point\",[82,5],{name:\"\",fixed:true,visible:false});\r\n\tconst p_arc_b_g_=board3.create(\"point\",[34,60],{visible:false})\r\n\tconst arc_b_g = board3.create('arc', [p_arc_b_g_, p1_arc_b_g,p2_arc_b_g]);\r\n\tconst p_arc_b_d_=board3.create(\"point\",[66,60],{visible:false})\r\n\tconst arc_b_d = board3.create('arc', [p_arc_b_d_, p2_arc_b_g,p3_arc_b_g]);\r\n\r\n\tconst titre_3= board3.create(\"text\",[73,98,'$\\\\text{Diganostic Voyelle}$'],{fontsize:12,fixed:true,highlight:false});\r\n\r\n\t\r\n\t\/\/ chartgement des boutons pour fixer les valeurs sur le repere \r\n\t\/\/let p_curseur_3 = board3.create('point', [10,20],{name:'i',withLabel:true,fillcolor:'green',strokecolor:\"green\",visible:true});\r\n\t\/\/let curseur_3=board3.create('circle',[p_curseur_3,4],{ fillcolor:'green',highlight:false,fixed:true});\r\n\t\r\n\tconst btn=board3.create('button',[50,95,'Valider',function() {charge_position_voyelle(box3G+\"_SE\");}]);\r\n\t\r\n\t\/\/ on ajoute la selection de la voyelle pour positionner le probl\u00e8me \r\n\tconst select_voyelle = board3.create('text',[5,95,\r\n    '<div style = \"font-family:Computer Modern,serif;font-size:10px;font-style:italic;\">'+\r\n    '<select id=\"'+box3G+'_SE\" onchange=\"chargement_motif(event);\" class=\"mybox1\"> '+\r\n    '<\/select>'+\r\n    '<\/div>'],{fixed:true,size:14});\r\n\r\n\t\/\/board3.curseurs={\"i\":p_curseur_3};\r\n\tboard3.curseurs={};\r\n\tconst select=document.getElementById(box3G+'_SE');\r\n\tselect.board=board3;\r\n\t\/\/select.attrib=curseur_3;\r\n\t\r\n}\r\nconst erase_all_curseurs=function(board) \u00a0{\r\n\tObject.keys(board.curseurs).forEach(curseur=> {\r\n\t\tconst curse=board.curseurs[curseur];\r\n\t\tcurse.remove();\r\n\t})\r\n\tboard.curseurs=[];\r\n\tboard.update();\r\n}\r\n\r\nconst positionne_all_curseurs=function(board, tab_curseurs) {\r\n\terase_all_curseurs(board);\r\n\tObject.keys(tab_curseurs).forEach(lettre=> {\r\n\t\tconst position=tab_curseurs[lettre];\r\n\t\t\/\/console.log(position);\r\n\t\tconst coord=[parseFloat(position[0]),parseFloat(position[1])];\r\n\t\tcreation_curseur(board, lettre,coord);\r\n\t})\r\n\t\r\n}\r\n\r\nconst creation_curseur=function(board, lettre, posit=[10,20]) \u00a0{\r\n\tconst couleur=voyelles[lettre].couleur;\r\n\tconst p_curseur_3 = board.create('point', posit,\r\n\t\t{name:lettre,fillcolor:couleur,strokecolor:couleur,visible:true,highlight:false,size:10,fixed:false, \r\n\t\t label: { \r\n\t\t\tcolor:\"black\",\r\n         \toffset: [0, 0],\r\n         \tanchorX: 'middle',\r\n         \tanchorY: 'middle',\r\n        \t}\r\n\t\t}\r\n\t);\r\n\t\/\/const  curseur_3=board.create('circle',[p_curseur_3,4],{strokecolor:couleur, fillcolor:none,highlight:false,fixed:true});\r\n\tboard.curseurs[lettre]=p_curseur_3;\r\n}\r\n\r\n\r\nconst chargement_select=function(ID) {\r\n\tlet texte=\"ARN_\";\r\n  \tvar sele = document.getElementById(ID);\r\n    Object.keys(voyelles).forEach(jeu=>{\r\n\t\tvar option = document.createElement(\"option\");\r\n\t\toption.text = jeu;\r\n\t\toption.value = jeu;  \/\/ on donne l'indice de la s\u00e9quence \r\n\t\tsele.add(option);\r\n    });\r\n}\r\n\r\nconst chargement_motif=function(e) {\r\n\t\/\/ il faut verifier si le curseur est present : sinon il faut le creer  \r\n\tconst bd=e.target.board;\r\n\tif (bd.curseurs[e.target.value]==undefined) {\r\n\t\tcreation_curseur(bd, e.target.value);\r\n\t\t\/\/const couleur=voyelles[e.target.value].couleur;\r\n\t\t\/\/curseur_3 = e.target.attrib;\r\n\t\t\/\/c\/onsole.log(\"couleur \u00e0 changer\",curseur_3);\r\n\t\t\/\/curseur_3.setAttribute({\"fillColor\":couleur});\r\n\t}\r\n}\r\n\r\n\/\/ ----------------------------------------------------------\r\n\/\/ chargement de la position de la voyelle sur le graphe \r\n\/\/ ----------------------------------------------------------\r\nconst charge_position_voyelle=function(obj_select) {\r\n\t\/\/ recup des infos du select et de la position \r\n\tconst XXX=obj_select.split(\"_box3G\")[0];\r\n\t\/\/const voyelle=document.getElementById(obj_select).value;\r\n\tconst data=document.getElementById(\"analyse_id_\"+XXX).data;\r\n\tconst segment=document.getElementById(\"segment_\"+XXX).value;\r\n\t\/\/console.log(segment, voyelle);\r\n\t\/\/ il faut balayer l'ensemble des curseurs pr\u00e9sents et les stocker \r\n\tconst select=document.getElementById(obj_select);\r\n\tconst board=select.board;\r\n\t\/\/data[segment][\"voyelles\"][voyelle]=[pt_curseur.X().toFixed(2),pt_curseur.Y().toFixed(2)];\r\n\t\r\n\tObject.keys(board.curseurs).forEach(curseur=> {\r\n\t\tdata[segment][\"voyelles\"][curseur]=[];\r\n\t\tconst curse=board.curseurs[curseur];\r\n\t\tdata[segment][\"voyelles\"][curseur]=[curse.X().toFixed(2),curse.Y().toFixed(2)];\r\n\t})\r\n\t\r\n\tconst tab=XXX.split(\"_\");\r\n\tfenComments_repositionne(tab[1]);\r\n\t\r\n}\r\n\r\n\r\n<\/script>\r\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Exemples de prononciation : FRAP\u00e9OR Liste de s\u00e9lection d&#8217;extrait d&#8217;entretien de M1 SDL 2024 &#8211; 2025 effectuer par SPGoO \u00e0 caract\u00e9riser par les expert(e)s.du consortium de FRAP\u00e9OR. Cette interface WEB de caract\u00e9risation des prononciations a \u00e9t\u00e9 \u00e9labor\u00e9e par SPGoO \u00e0 partir du protocole d\u00e9fini par Badreddine Hamma dans le cadre du cours SDL en M1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6873","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/6873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6873"}],"version-history":[{"count":33,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/6873\/revisions"}],"predecessor-version":[{"id":7685,"href":"https:\/\/spgoo.org\/index.php?rest_route=\/wp\/v2\/pages\/6873\/revisions\/7685"}],"wp:attachment":[{"href":"https:\/\/spgoo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}