Création d'un fichier wav pour épeler un mot

Description

Il y a de plus en plus de méthodes de filtrage de site (captcha ..) ou de masquage d'adresses mail utilisant des images.
Cela pose problème pour les non ou mal-voyants utilisant des synthétiseurs vocaux. Donc, en complément de l'image, on peut imaginer un message vocal.

Ce code contient essentiellement la fonction "epelle($chaine)" qui crée dynamiquement un fichier wav qui épelle la chaîne de caractères.
Ce n'est qu'une application de la classe wavEdit écrite par Thi Dinh (http://www.phpclasses.org/browse/file/11062.html).

Il faut d'abord créer un fichier wav pour chaque caractère reconnu et la fonction "epelle" concaténe les différents fichiers en seul fichier wav.
J'ai juste mis des exemples pour quelques lettres dans le zip.

J'utilise cette fonction en complément d'un code de création d'image pour masquer une adresse mail et éviter le spam : http://www.phpcs.com/codes/MASQUER-ADRESSE-MAIL-IMAGE_37462.aspx

Attention pour créer vos fichiers wav pour chaque lettre : il faut se conformer au type reconnu par wavEdit, wav non compressé, 8 ou 16 bits. Les wav créés avec le magnétophone de windows et par audiotools ne fonctionnant pas malgré mes réglages, je les ai créés avec Audacity (logiciel libre) et là ça passe.

Source / Exemple :


//fichier index.php avec la fonction epelle et un exemple d'utilisation

<?php

//chargement de la classe wavedit
include("wavedit.class.php");

//juste deux exemples
epelle("gilles@aol.fr");
epelle("alise@aol.fr");

function epelle($chaine){
	//création d'un objet wavEdit (voir le détail de la classe dans le ficheir waveEdit.class.php)  
	$wav = new wavEdit();
	
	//tableau des fichiers sons à concaténer
	$wFichiers= array();
	
	//on met tout en minscule
	$chaine=strtolower($chaine);
	
	//les sons pour chaque caractères sont dans un dossier
	$dossier_sons="sons/";
	//les fichiers wav pour les mots complets sont dans un autre dossier
	$dossier_sortie="adresses/";
	
	//si le fichier wav existe déjà, on ne le recrée pas .
	//utilisation d'une fonction de hachage pour éviter de mettre le mot à épeler en clair dans la page html envoyée au client
	
	$code=md5($chaine);
	
	if (!file_exists($dossier_sortie.$code.".wav")){
	
		for ($i=0; $i<strlen($chaine);$i++ ){
		$lettre = $chaine{$i};
		//si le caractère est alphanumérique ..
		if(ctype_alnum($lettre)) {
				//... alors ajouter dans le tableau $wFichier le nom du fichier wav correspondant, situé dans le dossier "sons"
				$wFichiers[]=$dossier_sons.$lettre.".wav";
			}
			//cas particuliers du point et de l'arobase
			else if ($lettre=="."){
				$wFichiers[]=$dossier_sons."point.wav";
				}
			else if ($lettre="@"){
				$wFichiers[]=$dossier_sons."arobase.wav";
				}
			}
		//concaténation des sons avec la classe wavEdit
		$wData=$wav->getFiles($wFichiers);
		$wav->joinFiles($dossier_sortie.$code);
		$wav->writeWavFile();
	}
	//un lien vers le fichier son correspondant au mot épelé
	echo "<A target='blank' href='$dossier_sortie$code.wav'>adresse vocale</A><br><br>";
}

?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (coplanacu)