Menu général| Fermer X |


 
1614 mots clé par thème et par ordre alphabétique pour faciliter vos recherches,

HTML (231)
2w,
ASCII 7 bits,
DTD,
Quicktime,
Real Player,
VLC Media Player,
Winamp,
Windows Media,
a,
abrr,
accesskey,
acronym,
adresse,
aif,
aiff,
alt,
ancre,
apple,
area,
article,
aside,
audio,
autobuffer,
autoplay,
avi,
axis,
b,
balise,
barré,
basefont,
bgsound,
big,
bloc,
blockquote,
body,
br,
caption,
caracteres,
caractères spéciaux,
cellule,
center,
challenge,
cite,
col,
colgroup,
color,
colspan,
commentaire,
condition,
conditionnel,
contenteditable,
controls,
coords,
custom data attributes,
data-,
datatemplate,
date,
datetime,
datetime-local,
dd,
del,
details,
div,
dl,
dns,
doctype,
domaine,
dt,
e-mail,
em,
email,
embed,
en ligne,
explorer,
favicon,
fieldset,
figcaption,
figure,
filter,
font,
footer,
for,
form,
formulaire,
frame,
frameset,
ftp,
h1,
head,
header,
headers,
hr,
href,
html,
html5,
hypertexte,
i,
icon,
icone,
if ie,
iframe,
image map,
img,
input,
ins,
internet,
ip,
jauge,
keygen,
keyparams,
keytype,
label,
language,
legend,
li,
lien,
link,
liste,
longdesc,
loop,
mail,
mailto,
map,
mark,
max,
mdi,
menu contextuel,
menu,
menuitem,
meta,
meter,
midi,
mime,
min,
mode,
mov,
mp3,
mpeg,
mpg,
name,
nav,
navigateur,
nest,
noframes,
nohref,
note,
number,
object,
ogg,
ol,
open,
optgroup,
option,
output,
p,
pattern,
placeholder,
plug in,
plugin,
pre,
preload,
progress,
protocole,
pubdate,
quizz,
ra,
ram,
range,
requiered,
rm,
rowspan,
rp,
rpm,
rt,
ruby,
rule,
s,
scope,
script,
search,
section,
select,
serveur,
shape,
site,
span,
spellcheck,
src,
step,
strict,
strike,
strong,
style,
sub,
summary,
sup,
swf,
table,
tableau,
tbody,
td,
tel,
telnet,
template,
textarea,
tfoot,
th,
thead,
time,
title,
titre,
tr,
transitional,
tt,
type mime,
u,
ul,
url,
usemap,
usenet,
validation,
validator,
vidéo,
vorbis,
w3c,
wav,
wave,
wbr,
webclick,
wmv,
www,
CSS (385)
%,
@import,
@keyframes,
@page,
Box-shadow,
Hexa,
RGB,
Text-shadow,
absolute,
active,
add,
affichage,
after,
alignement texte,
all,
alpha,
always,
animation,
animation-delay,
animation-direction,
animation-duration,
animation-fill-mode,
animation-iteration-count,
animation-name,
animation-play-state,
animation-timing-function,
arrière plan,
arrondi,
at,
attr,
attribut,
aural,
auto,
avoid,
backface-visibility,
background,
background-attachment,
background-clip,
background-color,
background-image,
background-origin,
background-position,
background-repeat,
background-size,
backwards,
balance,
baseline,
before,
bezier,
block,
blur,
border,
border-bottom-color,
border-bottom-style,
border-bottom-width,
border-box,
border-left-color,
border-left-style,
border-left-width,
border-radius,
border-right-color,
border-right-style,
border-right-width,
border-style,
border-top-color,
border-top-style,
border-top-width,
border-width,
bordure colonne,
bordure tableau,
both,
bottom,
bouton,
box-sizing,
braille,
brightness,
capitalize,
caption,
caption-side,
case à cocher,
cell,
center,
centrage,
centrer,
checkbox,
chroma,
circle,
class,
clear,
clip,
close-quote,
closest-corner,
closest-side,
coin,
col,
colgroup,
collapse,
colonnes multiples,
color,
column-count,
column-fill,
column-gap,
column-rule,
column-rule-color,
column-rule-style,
column-rule-width,
column-span,
column-width,
columns,
compact,
compteur,
contain,
content,
content-box,
contrast,
couleur,
countent,
counter-increment,
counter-reset,
cover,
crosshair,
cubic,
cubic-bezier,
cursor,
dashed,
decimal leading,
decimal,
default,
dimensionnement,
direction,
disc,
display,
dotted,
double,
drop-shadow,
dropshadow,
dynamiques,
e-resize,
ease,
ease-in,
ease-in-out,
ease-out,
ellipse,
ellipsis,
em,
embossed,
empty,
ex,
farthest-corner,
farthest-side,
filter,
filtre,
finishopacity,
finishx,
finishy,
first-letter,
first-line,
fixed,
flat,
fliph,
flipv,
float,
flux,
focus,
font,
font-family,
font-size,
font-stretch,
font-variant,
font-weight,
formulaire,
forwards,
freq,
from,
glow,
gradient,
gray,
grayscale,
groove,
générateur,
handheld,
height,
help,
hexa,
hidden,
horizontal,
hover,
href,
html5,
hue-rotate,
id,
image,
images,
inherit,
inline,
inline-block,
input[type=checkbox],
inset,
inside,
invert,
justify,
keyframes,
landscape,
left,
letter-spacing,
light,
line-height,
linear,
linear-gradient,
link,
list-item,
list-style,
list-style-image,
list-style-position,
list-style-type,
liste,
lower-alpha,
lower-greek,
lower-roman,
lowercase,
margin,
margin-bottom,
margin-left,
margin-right,
margin-top,
marker,
marks,
mask,
matrix,
matrix3d,
media,
medium,
menus,
middle,
move,
n-resize,
ne-resize,
no-repeat,
none,
normal,
nowrap,
nw-resize,
offx,
offy,
ombre,
opacity,
open-quote,
origin,
orpheans,
outset,
outside,
overflow,
padding-box,
page-break-after,
page-break-before,
paused,
perspective,
perspective-origin,
phase,
pixel,
pointer,
portrait,
position,
positive,
preserve-3d,
print,
progress,
projection,
pseudo classes,
pseudo éléments,
px,
quizz,
quote,
radial-gradient,
radio,
redimensionnement,
rel,
relative,
repeat,
repeat-x,
repeat-y,
repeating,
resize,
rgb,
rgba,
ridge,
right,
rollover,
rotate,
rotate3D,
rotateX,
rotateY,
rotateZ,
rotation,
run-in,
running,
s-resize,
saturate,
scale,
scale3d,
screen,
scroll,
se-resize,
sepia,
shadow,
site,
size,
skew,
solid,
spacing,
span,
square,
startx,
starty,
static,
step,
steps,
strength,
style curseur,
style tableau,
style texte,
style,
stylesheet,
sub,
super,
survol,
sw-resize,
text,
text-align,
text-bottom,
text-decoration,
text-indent,
text-shadow,
text-top,
text-transform,
text/css,
texte,
thick,
thin,
to bottom,
to left,
to right,
to top,
to,
top,
transform,
transform-style,
transition,
transition-delay,
transition-duration,
transition-property,
transition-timing-function,
translate,
translate3d,
translateX,
translateY,
translateZ,
translation,
transparence,
transparent,
tty,
tv,
type,
unicode-bidi,
upper-alpha,
upper-roman,
uppercase,
url(images),
variantes,
vertical,
vertical-align,
vide,
visibility,
visibilité,
visible,
visited,
w-resize,
wait,
wave,
white-space,
widows,
width,
word-spacing,
xray,
z-index,
DOM (253)
::after,
::before,
DOM,
HTMLDocument,
InnerHTML,
URL,
URLUnencoded,
action,
alert(),
appCodeName,
appVersion,
appendChild,
appname,
attributes[],
availHeight,
availWidth,
back(),
back,
background,
backgroundAttachment,
backgroundColor,
backgroundImage,
backgroundPosition,
backgroundRepeat,
boite dialogue,
border,
borderBottomColor,
borderBottomStyle,
borderBottomWidth,
borderCollapse,
borderColor,
borderLeftColor,
borderLeftStyle,
borderLeftWidth,
borderRightColor,
borderRightStyle,
borderRightWidth,
borderSpacing,
borderStyle,
borderTopColor,
borderTopStyle,
borderTopWidth,
borderWidth,
captionSide,
channelmode,
childNodes[i],
classList,
className,
clear,
clearIntervall(),
clearTimeout(),
clientHeight,
clientWidth,
clip,
clone,
cloneNode,
close(),
close,
closed,
color,
colorDepth,
compilateur,
confirm(),
cookie,
createElement,
création,
cssText,
cursor,
description,
dimension,
direction,
display,
document.getElementById,
domain,
dupliquer,
emptyCells,
enabledPlugin.name,
encoding,
enfant,
exécutable,
fenêtre,
fileName,
firstChild,
firstChild.nextSibling,
float,
focus,
font,
fontFamily,
fontSize,
fontStretch,
fontStyle,
fontVariant,
fontWeight,
forms,
forward(),
forward,
fullscreen,
getAttribute(),
getComputedStyle,
getElementById,
getElementsByName,
getPropertyValue,
go(),
go,
hasChildNodes(),
hash,
height,
history,
host,
hostName,
href,
id,
images,
innerHeight,
innerWidth,
javascript,
langage,
language,
lastChild.previousSibling,
lastModified,
left,
lenght,
length,
letterSpacing,
lineHeight,
listStyle,
listStyleImage,
listStylePosition,
listStyleType,
location,
margin,
marginBottom,
marginLeft,
marginRight,
marginTop,
maxHeight,
maxWidth,
menubar,
method,
mimeType,
minHeight,
minWidth,
minuterie,
moveBy,
moveTo,
méthode,
name,
navigateur,
navigator,
next,
nodeName,
nodeType,
noeud,
objet window,
objet,
offsetHight,
offsetWidt,
open(),
open,
opener,
outerHTML,
outerHeight,
outerWidth,
overflow,
padding,
paddingBottom,
paddingLeft,
paddingRight,
paddingTop,
pageBreakAfter,
pageBreakBefore,
pageXOffset,
pageyOffset,
parent,
parentNode,
pathName,
php,
pixelDepth,
platform,
pop up,
pop-up,
popup,
port,
position,
previous,
prompt(),
protocol,
pugins,
querySelector(),
querySelectorAll(),
quizz,
referrer,
reload(),
reload,
removeChild,
replace(),
replace,
reset(),
resizable,
resizeBy,
resizeTo,
right,
screen,
screenLeft,
screenTop,
screenX,
screenY,
script,
scrollBy,
scrollHeight,
scrollLeft,
scrollTo,
scrollTop,
scrollWidth,
scrollbar3dLightColor,
scrollbarArrowColor,
scrollbarBaseColor,
scrollbarDarkshadowColor,
scrollbarFaceColor,
scrollbarHighlightColor,
scrollbarShadowColor,
scrollbarTrackColor,
scrollbars,
search,
setAttribute(),
setIntervall(),
setTimeout(),
status,
style,
submit(),
suffixes,
taille,
target,
textAlign,
textContent,
textDecoration,
textIndent,
textOverflow,
textTransform,
timer,
title,
toolbar,
top,
type,
userAgent,
verticalAlign,
visibility,
width,
window,
wordSpacing,
write,
zIndex,
écran,
JavaScript (465)
!,
!=,
!==,
$,
%,
&&,
*,
++,
+,
+=,
,
-,
--,
.,
.=,
/,
<,
<=,
=,
==,
===,
>,
>=,
?,
A,
B,
Custom Data Attributes,
D,
DocumentTouch,
FileReader(),
G,
JSGF,
Leaflet,
Math.LN10,
Math.LN2,
Math.LOG10E,
Math.LOG2E,
Math.PI,
Math.SQRT1_2,
Math.SQRT2,
Math.abs(),
Math.acos(),
Math.asin(),
Math.atan(),
Math.atan2(),
Math.ceil(),
Math.cos(),
Math.exp(),
Math.floor(),
Math.log(),
Math.max(),
Math.min(),
Math.pow(),
Math.random(),
Math.round(),
Math.sin(),
Math.sqrt(),
Math.tan(),
OSI,
RangeError,
ReferenceError,
RegExp,
RemoveDoublons(),
S,
SpeechGrammar,
SpeechGrammarList,
SpeechRecognitionError,
SyntaxError,
TTS,
Text To Speech,
TypeError,
URIError,
W,
WebVTT,
XMLHttpRequest,
Z,
[ ],
^,
abort(),
abort,
action,
add,
addElement,
addEventListener,
altKey,
anchor(),
animation,
animationend,
animationiteration,
animationstart,
anonimous,
anonyme,
api,
appendChild,
arguments,
array(),
assignement,
attachEvent,
barre progression,
bgsound,
big(),
binaire,
blink(),
blob,
blur,
bold(),
boucle,
bouillonnement,
break,
button,
calculatrice,
calendrier,
callback,
cancel,
cancelBubble,
canvas,
capture,
caractères,
cartographie,
case,
catch,
centrage,
chaine caractères,
chaines,
change,
changedTouches,
charAt(),
charCodeAt(),
cible,
classe,
clavier,
clearData,
click,
client,
clientHeight,
clientWidth,
clientX,
clientY,
cloneNode,
closure,
code,
coller,
columnNumber,
command,
commentaires,
concat(),
condition,
continue,
converSeconde(),
conversion,
cookies,
copyLink,
copyMove,
couche,
createElement,
crossorigin,
ctrlKey,
cue,
currentTarget,
d,
dataTransfert,
dataset,
date,
dblclick,
decodeURI,
decodeURIComponent,
delete,
detachEvent,
detail,
diffusion,
dimension,
do,
domain,
double click,
doublons,
dragenter,
draggable,
dragleave,
dragover,
drop,
dropEffect,
décimal,
effectAllowed,
elapsedTime,
else,
embed,
encodage URL,
encodeURI,
encodeURIComponent,
enctype,
erreur,
error,
espace,
eval(),
event,
evènement,
exec(),
expires,
expression régulières,
fichier,
fieldset,
fileName,
fixed(),
focus,
fonction,
fontcolor(),
fontsize,
for in,
for,
form,
formulaires,
fromCharCode(),
function,
functions,
geocoder,
get,
getAttribute,
getData,
getDate(),
getDay(),
getFullYear(),
getHours(),
getMilliseconds(),
getMinutes(),
getModifierState(),
getMonth(),
getResponseHeader(),
getSeconds(),
getTime(),
getTimezoneOffset(),
getYear(),
getvoices,
glisser,
google map,
google,
grammars,
height,
hexa,
horloge,
html5,
htmlFor,
identifier,
if,
image sur curseur,
image,
imbrication,
impair,
in,
indexOf(),
innerHeight,
innerWidth,
input,
instance,
instanceof,
integrity,
interimResults,
isNan,
isfinite,
italics,
jauge,
join(),
json,
key,
keyboard,
keydown,
keypress,
keyup,
kind,
label,
lastIndexOf(),
lecteur vidéo,
legend,
length,
lineNumber,
linkMove,
linl(),
load,
longueur,
map,
marker,
match(),
max,
maxAlternatives,
menu contextuel,
message,
method,
mime,
mousedown,
mousemove,
mouseout,
mouseover,
mouseup,
move,
méthodes,
name,
new,
nomage,
nombre aléatoire,
noms,
object,
objet,
offsetLeft,
offsetParent,
offsetTop,
onboundary,
onend,
onerror,
onmark,
onnomatch,
onreadystatechange(),
onresult,
onresume,
open(),
options,
opérateurs,
ou,
pageX,
pageY,
pair,
paramètres url,
parse,
parseFloat(),
parseInt(),
path,
paused,
pending,
pitch,
pop(),
position,
post,
preventDefault,
procédures,
progress,
prototypes,
push(),
put,
quizz,
rate,
readAsArrayBuffer(),
readAsBinaryString(),
readAsDataURL(),
readAsText(),
reader,
readyState(),
reconnaissance vocale,
remove,
removeAttribute,
removeEventListener,
repeat,
replace(),
reset,
resize,
responseText(),
responseXML(),
resume,
return,
reverse(),
reviver,
rgb,
récupération paramètres url,
récursivité,
s,
screenX,
screenY,
search(),
secure,
select,
selectedIndex,
send(),
serveur,
setAttribute,
setData,
setDate(),
setDragImage,
setFullYear(),
setHours(),
setMilliseconds(),
setMinutes(),
setMonth(),
setRequestHeader(),
setSeconds(),
setTime(),
setYear(année),
shift(),
shiftKey,
slice(),
small(),
socket,
sort(),
souris,
sous titre,
speak,
speaking,
splice(),
split(),
spéciaux,
src,
srcElement,
srclang,
stack,
status(),
statusText(),
stopPropagation,
strike(),
sub(),
submit,
substr(),
substring(),
subtitles,
sup(),
switch,
syntaxError,
sécurité,
tableaux,
target,
targetTouches,
tcp,
test(),
textTracks,
textarea,
texte sur curseur,
this,
toGMTString(),
toLocaleString(),
toLowerCase(),
toSource(),
toString(),
toUpperCase(),
tooltip,
touchcancel,
touchend,
touches,
touchmove,
touchstart,
track,
trier,
try,
typeof(),
typeof,
udp,
unload,
unshift(),
use-credentials,
value(),
value,
valueOf(),
var,
variables,
vidéo,
virgule,
visibilité,
vocal,
voice,
void(),
vtt,
vu-mètre,
w,
while,
width,
window.event,
x/y,
xml,
z,
{ },
|,
PHP (247)
$_SERVER,
$filename,
,
?,
?php,
ALTER,
AND|OR,
AUTH_TYPE,
AuthFile,
AuthGroupFile,
AuthName,
AuthType Basic,
BETWEEN,
CONTENT_TYPE,
CREATE,
Cache-Control,
Content-Disposition,
Content-Length,
Content-Transfer-Encoding,
Content-Type,
DELETE,
DISTINCT,
DOCUMENT_ROOT,
Disallow,
EXIF,
ErrorDocument,
Expires,
FROM,
FormData(),
GATEWAY_INTERFACE,
HTTP_ACCEPT_LANGUAGE,
HTTP_HOST,
HTTP_USER_AGENT,
INSERT,
IPTC,
LIMIT,
Limit,
MSQL,
ORDER BY,
Options -Indexes,
PATH_INFO,
PATH_TRANSLATED,
PHP_AUTH_PW,
PHP_AUTH_USER,
PHP_SELF,
Pragma,
QUERY_STRING,
REMOTE_ADDR,
REMOTE_PORT,
REQUEST_METHOD,
REQUEST_URI,
RedirectPermanent,
SELECT,
SERVER_ADDR,
SERVER_ADMIN,
SERVER_NAME,
SERVER_PROTOCOL,
SERVER_SIGNATURE,
SERVER_SOFTWARE,
TALB,
TCOM,
TCON,
TCOP,
TENC,
TIT2,
TLEN,
TOPE,
TPE1,
TPE2,
TPOS,
TPUB,
TRCK,
TYER,
UPDATE,
USLT,
User-agent,
WCOM,
WCOP,
WHERE,
WOAR,
WPUB,
XMLHttpRequest(),
absolu,
alter,
append,
array(),
ascii,
attachement,
audio,
base 64,
base64_encode(),
basename,
bcc,
bd,
biginteger,
bin2hex(),
bit,
blob,
boundary,
byte,
caractère,
cc,
chaine,
channels,
char,
chemin,
chop(),
chunk,
chunk_split(),
clé,
code,
commentaires,
connect(),
content-transfer-encoding,
content-type,
convertisseur,
count(),
count,
create,
date,
decimal,
delete,
deny from all,
disposition-notification-to,
double,
download,
décimal,
echo,
else,
enum,
exif_read_data(),
explode(),
fetch,
fichiers,
fileatime,
filectime,
filemtime,
filesize(),
find,
float,
fopen(),
for,
foreach,
formulaire,
forum,
fpdf,
fputs(),
fread(),
free_result(),
from,
full-text,
get,
getimagesize(),
global,
grant,
headers,
hexa,
hexdec(),
htaccess,
hébergement,
id3,
if,
implode(),
index,
info,
inode,
insert,
integer,
interclassement,
iptcparse(),
isset(),
json,
longtext,
mail,
mediumint,
mediumtext,
mime,
mp3,
must-revalidate,
mysql,
méta données,
nl2br(),
no-cache,
nombre,
null,
numrows,
octet,
onsubmit,
opérateur,
opérateurs,
paramètres URL,
php,
phpinfo,
phpversion,
post,
preventDefault(),
primaire,
print(),
printf(),
qrcode,
query(),
query,
quizz,
readfile,
real,
relatif,
replace,
replay-to,
require valid-user,
revoke,
robots,
root,
scalaire,
select,
serveur,
set,
sextet,
smallint,
sql,
static,
str_replace(),
str_replace,
string,
strip_tags(),
strrev(),
tableaux,
tag,
text,
texte,
time,
timestamp,
tinyint,
tinytext,
types,
unique,
unpack(),
unsigned,
update,
upload,
varchar,
variables,
version,
while,
x-priority,
xml,
year,
zerofill,
Android (22)
activity,
activité,
adt,
android,
apk,
avd,
ddms,
drawable,
eclipse,
emulateur,
ide,
java,
jre,
launcher,
layout,
manifest,
package,
res,
sdk,
theme,
value,
éclipse,
Extra (11)
Audacy,
CGV,
Filezilla,
Hexedit,
Movie Maker,
Notepad++,
Photoeditor,
Xnview,
cookies,
mentions,
swap,
Aide| Fermer X |

 







Logo

Fiche Javascript : synthèse et reconnaissance vocale

Objet de la fiche :

Permettre d‘intégrer une synthèse vocale de qualité dans votre site Web. Activation vocale sur un lien ou au survol d‘une image, faire des actions en fonction de commandes vocales etc.

État de la fiche En cours


Plan de la fiche :

Avant propos :

La reconnaissance vocale est un concept utilisé pour gérer les interactions entre une personne (ou des sons spécifiques) et une application (machine) afin d'établir un dialogue dit "homme-machine". Pour être complet il convient de lui associer le concept de synthèse vocale (la machine parle à l'homme).
Ces deux concepts sont connus en tant que SR (Speech Recognition ou reconnaissance vocale) et TTS (Text-To-Speech ou synthèse vocale).

Présentation générale Web Speech API

Cette API permet d'incorporer des données de voix dans des applications Web. L'API est composée de deux parties : SpeechSynthesis (Synthèse vocale) et SpeechRecognition (Reconnaissance Vocale Asynchrone.)

  • SpeechRecognition est accessible via l'interface SpeechRecognition, qui fournit la capacité de reconnaître des informations provenant d'une source audio et répondre de la manière la plus appropriée. Généralement on utilise le constructeur de l'interface pour créer l'objet SpeechRecognition, qui possède un certain nombre d'événements disponibles pour détecter un signal audio.
    L'interface SpeechGrammar représente un conteneur pour un ensemble particulier de grammaire que votre application aura à reconnaître. La grammaire est définie par JSpeech Format de Grammaire (JSGF).
  • La synthèse vocale est accessible via l'interface SpeechSynthesis, qui est un composant de la synthèse vocale permettant aux programmes de lire à haute voix leur contenu texte.
    Les types de voix différents sont disponibles via l'interface SpeechSynthesisVoice, le traitement des messages est disponible via l'interface SpeechSynthesisUtterance.
    L'ensemble des paramètres est ensuite passé à la méthode SpeechSynthesis.speak () pour déclencher l'action de transformation du texte en voix.

Texte vers vocal (Text To Speech)

L'API de Synthèse vocale est étonnamment facile à mettre en œuvre. En fait, il prend basiquement seulement deux lignes de code pour permettre à votre application Web de parler aux utilisateurs.

Var enonciation = nouveau SpeechSynthesisUtterance (' Bonjour tout le monde ');
Window.speechSynthesis.speak (enonciation);

Dans cet exemple on commence par créer une instance de SpeechSynthesisUtterance avec comme paramètre le texte que vous voulez synthétiser. dans la deuxième ligne on passe l'objet SpeechSynthesisUtterance à la méthode speak de l'interface speechSynthesis.

SpeechSynthesis

Généralités

Cette interface de l'API web Speech contrôle la synthèse vocale texte vers paroles (Text To Speech)

L'objet SpeechSynthesis n'a pas besoin d'être instancié. Il fait partie intégrante de l'objet Window et peut ainsi être utilisé directement.

Comment tester si votre navigateur supporte cette API

  1. if (!('speechSynthesis' in window)) alert("non supportée")  
  2. else { Votre logiciel de traitement}  

Attributs - Méthodes - Evènements

L'interface speechSynthesis inclut un certain nombre d'attributs qui peuvent être utiles pour vérifier l'état de la synthèse vocale à l'instant t dans le navigateur.

AttributsExplications
pending Vrai(true) s'il existe encore des éléments de texte à traiter dans la queue.
speaking Du texte est en cours de traitement, indépendemment de l'état de pause.
paused1 Vrai(true) lorsque le traitement d'un texte est mis en pause.
MéthodesExplications
speak() A pour unique paramètres l'objet SpeechSynthesisUtterance. Cette methode est utilisé par démarrer la synthèse vocale pour les informations définies dans l'objet SpeechSynthesisUtterance.
pause() Mise en attente du processus de synthèse vocale.
resume() reprendre l'énonciation qui a été précédemment mise en pause.
cancel() Supprime toutes les synthèses en attente. La synthèse en cours sera aussi supprimée même si elle est en pause.
getVoices()2

Permet de retrouver sous forme de tableau, la liste des voix disponibles pour chaque navigateur.
getVoices().length donne le nombre de voix disponibles.
Chaque entrée dans la liste fournit des informations :

  • .name pour un nom mnémonique pour donner aux développeurs une information de la voix (par exemple "Google Deutsch", ou "Google UK English Female" etc).
  • .lang pour la langue de la voix (par exemple "fr-FR")
  • .voiceURI pour l'emplacement du service de synthèse vocale pour cette voix.
  • .localService : L'API peut utiliser des services tant locaux qu'à distance pour traiter la synthèse vocale. Si cet attribut est mis à vrai la synthèse vocale pour cette voix est traitée par un service local. Si c'est faux un service à distance est utilisé. Cet attribut peut être utile si vous construisez une application qui doit fonctionner hors connexion. Vous pourriez utiliser un service à distance quand une connexion à Internet est disponible et le repli vers un service local si la connexion n'est pas disponible.

Note1 : certains attributs ne sont pas toujours disponibles suivant les voix.

Note2 : les mêmes voix ne sont pas toujours disponibles suivant les navigateurs. Tester votre application sur le plus grand nombre de navigateurs possibles et prévoyez une voix de repli au cas ou !.

L'interface SpeechSynthesisUtterance

Généralités

Cette interface de l'API web Speech représente une requête de discours. Il contient le contenu à lire et des informations sur la façon de le lire (par exemple la langue ou le volume...)

Attributs - Méthodes - Evènements

SpeechSynthesisUtterance Attributes
AttributsExplications
text Lire ou définir le texte à synthétiser
lang Lire ou définir le langage utilisé par la synthèse pour l'énonciation.
volume1 Lire ou définir le niveau sonore du rendu vocal. Valeurs de 0 à 1. Valeur par défaut 1
rate1 Lire ou définir le rytme plus ou moins rapide du rendu vocal. La valeur standard est 1. Une valeur supérieure donnera un débit rapide par rapport à la normale. Une valeur inférirure donnera un débit plus lent. Valeurs de 0.1 à 10. Valeur par défaut 1.
pitch1 Lire ou définir l'intonation du rendu vacal. Valeurs de 0 à 2. Valeur par défaut 1.
voice Cet attribut spécifie la voix de synthèse et sa localisation.
SpeechSynthesisUtterance Events et SpeechSynthesisEvent Attributes
EvènementsExplicationsAttributs
onend = function(event) { ... } Déclenché lorsque l'action de rendu vocal est totalement achevé.
AttributsExplications
charIndex event.charIndex : Cet attribut indique l'index du caractère d'énonciation au moment de l'évènement. Il n'y a pas réellement de garantie absolue sur la position rendue lors de l'évènement.
elapsedTime event.elapsedTime : Cet attribut donne le temps écoulé entre le démarrage de la synthèse et le moment ou survient l'évènement.
name event.name : Cet attibut est disponible lorsque la synthèse atteind un tag spécifique (mark en SSML :Speech Synthesis Markup Language). Cet attribut indique le nom du marker comme defined en SSML. En ce qui concerne les évènements de type boundary (frontière), cet attribut indique le type de boundary qui a causé l'évènement : "mot" ou "phrase". Pour tous les autres évènement, la lecture de cet attribut renvoie undefined.
onerror Déclenché lorsqu'une erreur survient durant le rendu vocal.
onpause Déclenché lors de la mise en pause.
onresume Déclenché par la sortie de pause.
onmark Déclenché lorsque le rendu vocal atteint un marqueur SSML
onboundary Déclenché lorsque le rendu vocal atteint un mot ou une phrase en particulier.

Note1 : ces attributs ne sont pas supportés par toutes les voix.

Attention :

Il y a un bogue connu dans le Chrome qui fait que la synthèse vocale arrête de fonctionner si vous utilisez le texte plus grand que ~ 300 caractères. Suite à cela il faut arrêter et relancer Chrome.

Une solution simple est de faire un resume() permanent de l'objet window.speechSynthesis

  1. function resumeInfinity() {  
  2.     window.speechSynthesis.resume();  
  3.     timeoutResumeInfinity = setTimeout(resumeInfinity, 1000);  
  4. }  
  5.   
  6. // Démarrer le resume() permanent sur l'évènement onstart  
  7. utt.onstart = function(event) {   
  8.     resumeInfinity(); // truc pour les messages supérieurs à 250 caractères  
  9.     displayInfo('Démarrage de la synthèse (onstart)','informations');   
  10. }  
  11.   
  12. // Arréter le resume() permanent sur l'évènement onend  
  13. utt.onend = function(event) {  
  14.     totalElapsedTime += event.elapsedTime;  
  15.     displayInfo('Fin de la synthèse(onend)<br />Durée (<b>event.elapsedTime</b>) ' + totalElapsedTime + ' millisecondes.','informations');  
  16.     clearTimeout(timeoutResumeInfinity); // truc pour les messages supérieurs à 250 caractères  
  17. }   

Merci à un inconnu du web pour avoir trouvé cela.

Exemple

Structure de la démonstration

La structure générale de génération d'un texte parlé est relativement simple. Le contenu de la démonstration ci-dessous est un peu alourdie par les différents réglages possibles, ainsi que par la gestion et l'affichage des divers messages pour guider au mieux l'utilisateur. On ne détaille ici que les bases de la synthèse.

  • Instanciation des objets
    1. function initSynthese(){  
    2.     try{  
    3.         synth = window.speechSynthesis;  
    4.         utt = new SpeechSynthesisUtterance();  
    5.     }  
    6.     catch(e) {.......}  
    7. }  
  • Initialisation de l'utterrance : réglage de la voix, du volume, intonation et rytme,
    1. function setUtterance(_lang,_voiceTheme,_volume,_pitch,_rate){  
    2.     try{  
    3.         utt.volume = _volume; // 0 à 1  
    4.         utt.pitch = _pitch; //0 à 2  
    5.         utt.rate = _rate; // 0.1 à 10  
    6.       
    7.         synth.getVoices().forEach(function(voice) {  
    8.             if(voice.lang === _lang && voice.name === _voiceTheme) {  
    9.                 utt.voice = voice;  
    10.             }  
    11.         });  
    12.     }  
    13.     catch(e){...);}  
    14. }  
  • Initialisation des évènements de l'utterance
    1. function setUtteranceEvents(){  
    2.     try{  
    3.         // Initialisation des évènements  
    4.         utt.onend = function(event) { ... }  
    5.         utt.onerror = function(event) { ... }  
    6.         utt.onstart = function(event) { ... }  
    7.         utt.onpause = function(event) { ... }   
    8.         utt.onresume = function(event){ ... }  
    9.     }  
    10.     catch(e){...}  
    11. }  
  • Démarrage de la synthèse
    1. synth.speak(utt);  

Démonstration

Remarque :
Deux timeout ont été introduits pour ne démarrer les actions qu'aprés un delay aprés le chargement complet de la page. Il s'agit d'un petit bug pas encore corrigé sur chrome (sans cela on n'arrive pas à faire fonctionner correctement la synthèse vocale.

  1. setTimeout("starSupervision()",1000);  
  2. setTimeout("afficheVoixDisponible()",1000);  


Reconnaissance vocale

webkitSpeechRecognition

Comment tester si votre navigateur supporte cette API

  1. if (!('webkitSpeechRecognition' in window))  alert("non supportée")  
  2. else { Votre logiciel de traitement}  

Attributs - Méthodes - Evènements

Attributs (SpeechRecognition Attributes)Explications
continuous False(faux) par défaut signifie que quand l'utilisateur arrête de parler, la reconnaissance de la parole s'arrête. Ce mode est utilisé pour des textes simples comme des champs de saisie courts.
True(vrai)) signifie que la reconnaissance continue même en cas de pauses de l'utilisateur dans sa séquence vocale.
interimResults False(faux) par défaut signifie que les résultats rendus par la reconnaissance vocale sont finaux et ne changeront pas (ce qui est dit est intégralement retranscrit).
True(vrai)) signifie que les derniers résultats obtenus sont provisoires et peuvent changer en fonction de la compréhension du système de reconnaissance. Une fois bien compris les résultats deviennent définitif et ainsi de suite.
lang Langue de la reconnaissance vocale. Exemple en-US ou fr-FR.
grammars L'attribut de grammaires stocke la collection des objets SpeechGrammar qui représentent les grammaires qui sont actives pour cette reconnaissance.
maxAlternatives Règle le nombre maximum de SpeechRecognitionAlternative (d'alternatives) fourni par résultat. La valeur par défaut est 1.
serviceURI Spécifie l'emplacement du service de reconnaissance vocale utilisé par SpeechRecognition pour traiter la reconnaissance proprement dite.
Méthodes (SpeechRecognition Methods)Explications
start() Active la reconnaissance vocale. Dés le démarrage de la capture audio l'évènement onstart est déclenché. Ensuite pour chaque partie de la reconnaissance c'est l'évènement onresult qui est activé.
stop() Arrêt de l'écoute audio avec retour de la reconnaissance disponible jusqu'à l'arrêt de l'écoute.
abort () Arrêt de la reconnaissance vocale et de l'enregistrement audio sans renvoi d'information.
Evènements (SpeechRecognition Events)Explications
onstart Disponible lorsque le service de reconnaissance vocale commence à écouter le média entrant, dans le but de reconnaître les grammaires associées à l'objet SpeechRecognition en cours.
onend Disponible lorsque le service de reconnaissance vocale se déconnecte.
onaudiostart Disponible lorsque le navigateur commence à capturer le son.
onsoundstart Disponible lorsqu'un son a été détecté.
onspeechstart Disponible lorsque du son à été reconnu par le service de reconnaissance vocale comme de la parole.
onspeechend Disponible lorsque la parole reconnue par le service de reconnaissance vocale a cessé d'être détectée.
onsoundend Disponible lorsque le son n'est plus détecté.
onaudioend Disponible lorsque le navigateur a terminé la capture audio.
onnomatch Disponible lorsque le service de reconnaissance vocale retourne un résultat final sans concordance significative.
onerror = function (event) {}; SpeechRecognitionError

Disponible si une erreur survient. Les attributs suivant sont disponibles (event.error) :

  • "no-speech" : Pas de parole détectée.
  • "aborted" : La réception vocale a été interrompue pour une raison quelconque. Cela peut être du à une action de l'utilisateur.
  • "audio-capture" : Saisie audio interrompue.
  • "network" : Liaison réseau interrompue.
  • "not-allowed" : Micro non autorisé.
  • "service-not-allowed" : Le navigateur ne permet pas à l'application Web d'accéder au service de reconnaissance, pour des raisons de sécuriré, de vie privée ou de préférences utilisateur.
  • "bad-grammar" : La grammaire associé au système de reconnaissance prénte un défaut ou n'est pas supportée.
  • "language-not-supported" : Le langage paramétré n'est pas disponible.
onresult = function (event) {};

Renvoyé quand le service de reconnaissance vocale retourne un résultat - un mot ou une expression ayant été positivement reconnus et disponible pour l'application.

Le handler de onresult concataine tous les résultats reçus au fur et à mesure.

Les évènements exploitables dans la fonction sont :

  • event.results[i] – ce tableau contient les objets resultant de la reconnaissance vocale. Chaque élément du tableau correspond à la reconnaissance d'un mot.
  • event.resultIndex – index courant du résultat de la reconnaissance vocale.
  • event.results[i][j] – alternative possible d'un mot reconnu. Le premier élément est le mot reconnu le plus probable.
  • event.results[i].isFinal – Bouléen qui indique si le résultat est un résultat définitif ou temporaire.
  • event.results[i][j].transcript – texte représentant un mot.
  • event.results[i][j].confidence – probabilité de décodage correct (valeur entre 0 et 1).

Grammaire (SpeechGrammar objects)

Tout logiciel de reconnaissance vocale doit être capable de comparer une entrée sonore à une grammaire afin de produire une transcription en texte littéral de l'entrée détectée.

Une grammaire de reconnaissance vocal est un ensemble de règles ou de contraintes qui définissent ce qu'un moteur de reconnaissance vocale peut identifier en tant qu'entrée explicite.

Ces objets pour leur définition utilisent le format JSGF (JSpeech Grammar Format). D'autres formats peuvent aussi être utilisés.

Objet SpeechGrammar

Cet object représente le container d'une grammaire. Il possède des attributs permettant d'initialiser ou de retourner des informations sur la grammaire de l'objet SpeechGrammar.>

  • src : URI pour la grammaire..
  • weight1 (optionnel) : Cet attribut contrôle le poids que le service de reconnaissance vocale devrait utiliser avec cette grammaire. Par défaut, une grammaire a un poids de 1. Des plus grandes valeurs de poids pondèrent positivement la grammaire tandis que des valeurs de poids plus petites font la grammaire moins fortement pondérée.

Note1 : La propriété Weight retourne une valeur à virgule flottante indiquant le poids relatifs qu'une instance du moteur de reconnaissance doit assigner à la grammaire lors de la saisie vocale.

La reconnaissance vocal est un système pondérée.Elle évalue tous les chemins d'accès possibles de reconnaissance sur une combinaison de poids de la grammaire, les poids définis pour les solutions dans la grammaire, ainsi que les probabilités définies par les modèles de parole. Le moteur de reconnaissance vocale utilise la combinaison des poids et probabilités pour classer les reconnaissances potentielles. Les grammaires avec des poids plus élevés fournissent plus sur le classement des méthodes de reconnaissance que les grammaires avec les poids inférieurs.

SpeechGrammarList

Cet object représente l'ensemble des objets SpeechGrammar contenant eux même des mots ou des construction de mots qui devront être reconnus par la reconnaissance vocale .

Propriétés
SpeechGrammarList.lengthNombre d'objets SpeechGrammar contenus dans l'objet SpeechGrammarList.
Méthodes
SpeechGrammarList.item()Permet aux objets SpeechGrammard'être retrouvé à l'aide de SpeechGrammarList en utilisant la syntaxe de tableau (index de l'élément).
SpeechGrammarList.addFromURI()Ajoute à SpeechGrammarList une nouvelle grammaire accessible via une URI sous forme d'un nouvel objet SpeechGrammar.
SpeechGrammarList.addFromString()Ajoute à SpeechGrammarList une nouvelle grammaire disponible sous forme d'une chaîne de caractères au format JSGF (ou d'une variable correctement initialisée) sous forme d'un nouvel objet SpeechGrammar

Le format JSGF

Le fichier JSGF définit les règles de la grammaire à utiliser et permet aussi de définir une grammaire plus ou moins restrictive qu'une liste de mots peut faire. La règle complète est définie comme un standard du W3C.

Eléments de base de la structure
  • La première ligne du fichier est l'identifiant du fichier JSGF obligatoire pour tout fichier de ce type.
  • La ligne suivante définie le nom de la grammaire.
  • Chaque ligne doit se terminer par un point virgule ;
  • On peut insérer des commentaires aprés // sur une ligne, ou entre /* et */ pour une ou plusieurs lignes.
  • Les règles de grammaire sont définies entre les signes < >. Les règles entre crochets [ et ] indiquent que celles ci sont optionnelles.

Voici quelques méthodes clés et exemples.

Exemple 1

Supposons que vous voulez reconnaître un ordre de trois chiffres. Tandis que l'approche de liste de corde(série) pourrait être utilisée pour spécifier une grammaire appropriée, la grammaire consisterait en mille commandes. Inutile de dire, ceci est difficile d'écrire et maintenir(entretenir). Le fichier(dossier) de JSGF qui reconnaît un ordre de trois chiffres contient les lignes suivantes :

Exemple 2

Cet exemple montre comment utiliser des étiquettes de grammaire (tag). Les étiquettes de grammaire sont utilisées pour localiser des mots reconnus ou des expressions.

  1. #JSGF V1.0;  
  2. // Inspiré d'un exemple de  http://www.w3.org/TR/jsgf/  
  3. grammar cncexample;  
  4. public <cnccommand> = [ <start-polite> ] <command> ;  
  5. <start-polite> = ( bitte | would you | could you | kindly ) + ;  
  6. <command> = <operation> [ <determiner> ] <object> ;  
  7. <operation> = ( open | move | copy | delete | close ) {OPERATION} ;  
  8. <determiner> = ( a | an | the ) ;  
  9. <object> = ( file | window | menu | link | directory) {OBJECT} ;  

Cette grammaire pourra reconnaîtra des phrases comme par exemple "please open the file".

  • La première règle est définie comme publique : c'est cette règle qui défini la visibilité extérieure de la grammaire. Les règle publique sont les phrases ou mots que la grammaire peut utiliser pour la reconnaissance.
  • Les informations entre { } identifient

Exemple

Structure de la démonstration

La structure générale de reconnaissance vocale est encore plus simple à mettre en oeuvre que la transformation texte / Parole vue précédemment. Le contenu de la démonstration ci-dessous est un peu alourdie par les différents réglages possibles, ainsi que par la gestion et l'affichage des divers messages pour guider au mieux l'utilisateur. On ne détaille ici que les bases de la reconnaissance.

  • Test de compatibilité :
    1. if (!('webkitSpeechRecognition' in window)) {// non compatible}  
  • Déclaration de la variable globale : final_transcript qui représente la chaine de caractères transcrite.
    1. var final_transcript = "";  
  • Instanciation de l'objet et déclaration de variables globales
    1. var recognition = new webkitSpeechRecognition();  
  • Initialisation de l'objet
    1. recognition.continuous = true;  
    2. recognition.interimResults = true;  
    3. recognition.lang = "fr-FR";               
  • Initialisation des évènements
    1. recognition.onstart = function() { ... }  
    2. recognition.onresult = function(event) { ... }  
    3. recognition.onerror = function(event) { ... }  
    4. recognition.onend = function() { ... }  
  • Gestion de l'évènement onresult = function(event) { ... }
    1. recognition.onresult = function(event) {  
    2.     var interim_transcript = '';  
    3.   
    4.     for (var i = event.resultIndex; i < event.results.length; ++i) {  
    5.       if (event.results[i].isFinal) {  
    6.         final_transcript += event.results[i][0].transcript;  
    7.       } else {  
    8.         interim_transcript += event.results[i][0].transcript;  
    9.       }  
    10.     }  
    11.     final_transcript = capitalize(final_transcript);  
    12.     final_span.innerHTML = linebreak(final_transcript);  
    13.     interim_span.innerHTML = linebreak(interim_transcript);  
    14.   };  
    15. }  
  • Adaptation HTML
    1. <div>  
    2.     <span id="final_span"></span>    
    3.     <span id="interim_span"></span>  
    4. </div>  
  • Démarrage / Arrêt de la reconnaissance
    1. recognition.start();  
    2. // ou  
    3. recognition.stop();  

Remarques

  • Le handler de onresult concataine tous les résultats reçus au fur et à mesure, dans deux chaines de caractères :final_transcript et interim_transcript. Les chaines résultantes peuvent inclure "\n", comme lorsque l'utilisateur dit "nouveau paragraphe", d'ou l'utilisation de la fonction linebreak pour convertir ceux-ci en balises HTML < br > ou < p >.
    Ces chaines sont transférées à l'élément < span > (via innerHTML) : final_span avec un style de texte noir (informations définitives) et interim_span avec un style de texte gris(informations temporaires).

    Dans notre exemple chaque élément est ajouté au fur et à mesure que l'on parle, on peut faire en sorte que seul un mot soit pris en compte (donc si plusieurs mots sont dits, chaque mot remplacera le premier et ainsi de suite), simplement en modifiant dans l'évènement event :
    • final_transcript += event.results[i][0].transcript; => final_transcript = event.results[i][0].transcript;.
    • interim_transcript += event.results[i][0].transcript; => interim_transcript = event.results[i][0].transcript;.
  • interim_transcript est défini comme variable locale. Elle est donc renouvelée chaque fois que l'évènement est activé. Ceci est nécessaire car il est possible que tous les résultats temporaires puissent être modifiés depuis le précédent évènement.
    On aurait pu faire la même chose avec la variable final_transcript (c'est à dire la définir en local et non en global) simplement en modifiant le départ de la boucle : for (var i = 0;...) au lieu de for (var i = event.resultIndex;...). Dans le cas de trés longs textes ou lorsque on veut optimiser à tout prix, il est préférable d'utilise event.resultIndex pour initialiser la boucle for.

Démonstration

Remarque sur l'ajout d'une grammaire

Les étapes suivantes ont été implémentées

  • Création d'une nouvelle instance SpeechRecognition en utilisant le constructeur SpeechRecognition()
  • Création d'une nouvelle SpeechGrammarList
  • Ajouter à SpeechGrammarList une grammaire sous forme de chaîne en utilisant la méthode SpeechGrammarList.addFromString, ainsi qu'un poids, optionnel, qui définit l’importance de cette grammaire par rapport aux autres grammaires de la liste. Ce facteur peut aller de 0 à 1.
  • Initaliser cette nouvelle grammaire comme étant celle qui sera reconnue par l'instance SpeechRecognition qui pourra utiliser les propriétés deSpeechRecognition.grammars.

Note : le navigateur Chrome ne semble pas traiter des grammaires spécifiques; au lieu de cela il rend juste tous les résultats et vous pouvez les traiter comme vous voulez.


Sécurité

Les pages hébergées avec accessibilité en http doivent demander la permission à chaque requête d'une capture audio. Ceci pour éviter une brèche de sécurité dans laquelle une application pourrait faire de l'enregistrement audio et écouter en permanance toutes les données échangées, une fois que l'utilisateur ai autorisé la fonctionnalité audio.

Application


© Jany 2008-2023
Respectons la propriété intellectuelle

 


Erreurs, remarques, suggestions : monwebfacile@free.fr
Reproduction interdite sans citation de la source monwebfacile   © Jany 2008-2023