begin process at 2012 05 27 19:42:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CRÉATION D'UN FICHIER WAV POUR ÉPELER UN MOT

CRÉATION D'UN FICHIER WAV POUR ÉPELER UN MOT


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :wav, son, vocal, épeler, wavedit Niveau :Débutant Date de création :15/05/2006 Date de mise à jour :16/05/2006 01:01:20 Vu / téléchargé :12 538 / 826

Auteur : coplanacu

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 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-IM AGE_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

  • //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>";
  • }
  • ?>
//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>";
}

?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 mai 2006 01:01:20 :
dans cette modif. les fichiers wav sont enregistrés sous un nom codé en utilisant une fonction de hachage. (suggestion de kankrelune). Cela évite de mettre en clair le nom épelé dans le code html dans le cas particulier des masquages d'adresses mail ou les captcha.

 Sources du même auteur

Source avec Zip MASQUER UNE ADRESSE MAIL PAR UNE IMAGE

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CAPTCHA ANTI-BOT + FICHIER SON (WAV) par nax333

Commentaires et avis

Commentaire de cybertrand17 le 15/05/2006 14:58:11

Salut,

Fopen dans le script dommage pour ceux dont l'hébergeur ne l'autorise pas!

A+

Commentaire de kankrelune le 15/05/2006 19:05:04

remplace

$lettre=substr($chaine,$i,1);
$ascii=ord($lettre);
//si le caractère est alphanumérique
  if (($ascii>=97 && $ascii<=97+25) || ($ascii>=48 && $ascii<=48+9)){

par

$lettre = $chaine{$i};

if(ctype_alnum($lettre)) {

;o)

Sinon l'idée est sympa... .. .

@ tchaOo°

Commentaire de kankrelune le 15/05/2006 19:15:00

@ cybertrand17... forcement si tu peux pas manipuler les fichiers sur ton serveur... m'enfin bon dans ces cas là tu peux pas faire grand chose (lol)... .. . ;o)

@ coplanacu... dans le cas d'une protection (d'email par exemple) il faudra crypter le nom du fichier (par exemple en haschant le nom avec md5) sinon ça servira à rien vu que le nom apparait en clair... ça permettra aussi d'éviter des problèmes si des caractères comme les quotes sont présent dans le nom ( <a href="on m'appel "kankrelune".wav">adresse vocale</a> risque de poser quelques problèmes)

sinon remplace...

echo "<A target='blank' href='$dossier_sortie$chaine.wav'>adresse vocale</A><br><br>";

par...

echo '<a target="_blank" href="'.$dossier_sortie.$chaine.'.wav">adresse vocale</a><br /><br />';

@ tchaOo°

Commentaire de coplanacu le 15/05/2006 22:00:06

pour le fopen effectivement je ne peux pas faire grand chose, je ne savais même pas que des serveurs ne le permettaient pas.

Merci kankrelune pour tes remarques. Pour le masquage tu as tout à fait raison il ne faut pas que l'adrese apparaisse dans la balise <a> je vais écrire le code pour ce cas. J'avais déjà fait la même erreur dans "http://www.phpcs.com/codes/MASQUER-ADRESSE-MAIL-IMAGE_37462.aspx" et j'avais corrigé à l'aide d'une variable session. Je vais utiliser le hachage comme tu le suggères. Sinon je peux stocker les noms dans une base de données mais c'est un peu lourd.
J'ai mis à jour grâce à toi mon fichier d'aide sur php (un chm téléchargé il y a trois ans) : la fonction ctype_alnum n'y figurait pas !

Je n'ai pas compris ta suggestion:
echo '<a target="_blank" href="'.$dossier_sortie.$chaine.'.wav">adresse vocale</a><br /><br /

Je croyais que c'était équivalent. J'ai juste lu quelque part que les ' sont traitées plus rapidement que les " en php.

Commentaire de coplanacu le 16/05/2006 01:06:19

voilà les modifs suggérées par kankrelune sont dans le zip et dans le code. Merci à lui.

question pour les matheux : est-ce que le md5 est injectif (en tant que fonction) sur les chaînes de caractères courtes genre email ?
(à mon avis oui).

Commentaire de kankrelune le 16/05/2006 14:22:07

Je n'ai pas compris ta suggestion:
echo '<a target="_blank" href="'.$dossier_sortie.$chaine.'.wav">adresse vocale</a><br /><br /

Les simples quotes sont effectivement plus rapide que les doubles quotes car php ne parse pas la chaine contenu entre les quotes... mais vu la taille de la chaine ce n'est pas trop important... mais autant prendre de bonnes habitudes... ;o) ...le changement est surtout important au niveau du html

target="_blank"

et non

target="blank"

<br />

et non

<br>

et peut être ="..." à la place de ='' mais ça je n'en suis pas sûr... .. .

Pour être XHTML valid il ne faudrait même pas d'attribut target... .. .

Par contre je suis désolé je ne pige pas ta question concernant md5... .. .

@ tchaOo°

Commentaire de wizard512 le 16/05/2006 18:38:57

Pour ta question sur le md5 ( d'aprés se que j'ai compris )
Il est possible de le crypter en md5 au lieu d'avoir l'adresse em@il
bref tu peux effectuer un md5 sur l'adresse email pour plus de sécuriter.
Tu as juste a utiliser la fonction de cryptage "md5( $chaine )"

Commentaire de coplanacu le 17/05/2006 14:15:09

Merci pour les précisions sur le quote. Pour le html c'est vrai que je ne fais pas l'effort de valider le code.

J'en ai profité pour regarder quelques articles sur le md5. Pour résumé le md5 n'est pas au départ une méthode de cryptage. Il associe un code (hash) à un fichier donné de telle façon : 1) qu'il soit très difficile de retrouver un (pas le, car il y en a plusieurs) fichier qui donnerait le même code,  2) qu'une modification mineure dans le fichier entraîne une différence importante dans le code. Quand deux fichiers ont le même code on dit qu'il y a collision. Pour deux fichiers ayant un sens (texte par ex.) une telle collision est très improbable. Donc ici il est très improbable que deux adresses mail ait le même code md5. Idem pour les mots de passe. Si c'était le cas ce serait très fâcheux pour ce prog ! Je pense que dans le cas des petits textes (mail, mots de passe) le "très improbable" est ici remplacé par "impossible" et que le md5 fonctionne comme un cryptage classique sans collision.
pour les curieux :
http://www.reseaux-telecoms.net/actualites/lire-une-collision-md5-qui-tombe-sous-le-sens-10995.html

Commentaire de kankrelune le 17/05/2006 15:09:50

Effectivement le md5 ce n'est pas du cryptage mais du haschage car c'est à sens unique... j'ais utilisé le mot cryptage pour ce qui concerne le fait de cacher le nom dans le lien... .. . ;o)

@ tchaOo°

Commentaire de aze555666 le 22/05/2006 18:15:35

@kankrelune, pour ta culture générale, une application injective veut dire que tout élément de l'ensemble d'arrivée admet au plus un antécédant dans l'ensemble de départ (f(x)=y n'admet q'une ou zéro solutions pour un y donné). Ici, ça voudrait dire que deux mails ne pourraient pas avoir le même cryptage.

Commentaire de punkcity le 19/03/2007 19:59:41

Salut.

Dans le fichier de la classe wavedit.class.php il n'y aurait pas une erreur ligne 94 avec $name = "wavefile_" . $this->default_name++; qui devrait plutot etre $name = "wavefile_" . $this->$default_name++;

Merci en tout cas pour ce script

Bonne journée

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

balise, cache :( [ par elanspeech ] Bonjour,J'utilise la balise suivante :&lt;embed src="fichier.wav" width=145 height=25 autostart="false" cache="false" controls="controlpanel"&gt;fichi Travailler fichier wav [ par jeje11991 ] Bonjour,Est il possible de "couper" un fichier wav en plusieurs morceaux dont la durée serait déterminé par moi même et est il possible d eomparer un comparaison fichier wav [ par jeje11991 ] Bonjour,Y'a t-il une focntion pour comparer 2 fichiers wav et retourner 0 si c'est pas la même chsoe et retourner 1 si c'est la même choseMERCIII wav [ par mdadou ] slt je demande l'aide pour :comment enregistrer des fichiers wav sur la base de donnéeset comment ensuite j'ai écoute ces fichier.merci d'avance message vocal par modem rtc [ par ericsandrine ] Bonjour, j'essai de m'envoyer un fichier vocal par modem rtc en php mais je n'y arrive pas ,ou à récupérer les signal input de mon modem vocal olitec convertir mp3 en wav [ par sisi231 ] Bonjour, Je souhaiterais convertir des fichiers MP3 en WAV côté serveur sans utiliser d'utilitaires Linux donc qu'en PHP, pourriez-vous m'indiquer une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales