Temas etiquetados como: ‘mp3’

Sintetizar texto a voz con Festival en Web

4 Diciembre, 2009

En este post doy por hecho que sabemos hacer la instalación del servicio de Festival en nuestro equipo linux, si no es así siempre podéis pasar por Festival, de texto a voz en linux.

Después de unos post "filosóficos" hoy pasamos nuevamente a la parte ténica, en donde con un par de ficheros podremos generar un fichero mp3 sintetizado con Festival mediante un texto de un formulario web.

El ejemplo que expongo a continuación es una página web sencilla que tras rellenar el texto en un textarea lo envía a si misma y retorna la descarga de un fichero mp3 con el texto sintetizado, siempre que tengamos el servicio de festival configurado.

El ejemplo de página web sería:

PHP:
  1. <?php
  2. if($_POST['texto']){
  3.    $filename = md5($_POST['texto']);
  4.    $txtFile=$filename;
  5.    $mp3File=$filename.".mp3";
  6.    $fp = fopen($txtFile, 'w');
  7.    fwrite($fp,$_POST['texto']);
  8.    fclose($fp);
  9.    exec("./lanza.sh $txtFile");
  10.    if(file_exists($mp3File)){
  11.       $fp = fopen($mp3File,'r');
  12.       if (filesize($mp3File)) {
  13.         $mp3 = fread($fp, filesize($mp3File));
  14.       }
  15.       fclose($fp);
  16.    }
  17.    if(isset($mp3)){
  18.       header('Content-Type: audio/x-mp3');
  19.       header('Content-Disposition: attachment; filename="'.$mp3File);
  20.       header('Content-Length: '. filesize($mp3File));
  21.       echo $mp3;
  22.       unlink($mp3File);
  23.       unlink($txtFile);
  24.    }
  25. }else{
  26. ?>
  27. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  28.  
  29. <html>
  30.  <head>
  31.    <title>Demo</title>
  32.  </head>
  33. <body>
  34.  <h1>Demo</h1>
  35.  <form action="" method="post">
  36.    <textarea name="texto" rows="10" cols="50"></textarea>
  37.    <br />
  38.    <input type="submit" name="enviar" value="enviar" />
  39.  </form>
  40. </body>
  41. </html>
  42. <?   
  43. }
  44.  
  45. ?>

Como podemos ver, lanzamos un script para generar el fichero mp3, que es la parte más importante ya que cualquier programador y más si hablamos de alguien experto en PHP puede observar que el código es realmente sencillo. Pero lo más divertido fue crear el script sh para generar el fichero mp3.

C:
  1. #!/bin/sh
  2. TEXT=`cat $1`
  3. PAR1="(Parameter.set 'Wavefiletype 'riff)\n"
  4. PAR2="(let ((utt (Utterance Text \"$TEXT\"))) (begin (utt.synth utt) (utt.save.wave utt \"$1.wav\"))) \n"
  5. echo Inicio festival!
  6. echo $PAR1$PAR2 | festival -b --pipe --language spanish
  7. lame -hf $1.wav $1.mp3
  8. rm $1.wav

Aquí en el script, lo que hacemos es indicarle a Festival que la salida la queremos en un fichero Wav. De todas formas no tenemos todo resuelto! tenemos que generar el mp3, y con lame lo hacemos de una manera sencilla :-)

Espero que os pueda ser de utilidad esta mini-receta, cualquier duda siempre podéis plasmarla en un comentario.

Como cortar archivos mp3 con Ubuntu

2 Julio, 2008

Si quieres cortar un trozo de un mp3 utilizando ubuntu/debian tienes que instalar el paquete poc-streamer. Este paquete contiene dos herramientas:

  • mp3cue: mp3cue puede cortar un gran fichero mp3 de acuerdo con una de canciones contenidas en un archivo .cue
  • mp3cut: Puede dividir o concatenar mp3 de acorde a los espacios de tiempo que se le indican.

Para instalar el paquete poc-streamer ejecuta en consola:

sudo aptitutde install poc-streamer

Sintaxis de mp3cut

mp3cut [ -o outputfile ] [ -T title ] [ -A artist ] [ -N album-name ] [ -t [hh:]mm:ss[+ms]-[hh:]mm:ss[+ms] ] mp3file [[ -t … ] mp3file1 …]