Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/bin/sh
  2. # txt2mp3 - convert ebooks to audiobooks (text files to mp3 audio files)
  3. # v0.9
  4. # TODO: remover os números de página, não soletrar acrônimos nem abreviações (ex.: OK, Dr.)
  5. #   BR4 female http://tcts.fpms.ac.be/synthesis/mbrola/dba/br4/br4.zip
  6. #
  7. # (c) 2008 Everthon Valadão <everthonvaladao@gmail.com> under the GPL
  8. #          http://www.gnu.org/copyleft/gpl.html
  9. #
  10. # OBS.: primeiramente é necessário instalar os pré-requisitos
  11. #       sudo apt-get -y install espeak lame xpdf-utils odt2txt antiword
  12. #       sudo apt-get -y install mbrola mbrola-br1 #mbrola-br3
  13. #
  14. #       para testar se a instalação foi bem sucedida, execute em um terminal:
  15. #       echo echo 'teste, teste, funciona!' | espeak -v mb-br1
  16. #
  17. #   dependendo de sua versão do Ubuntu (< 10.04), pode ser necessário instalar o MBROLA manualmente:
  18. #       cd /tmp
  19. #       wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbrola3.0.1h_i386.deb && sudo dpkg -i mbrola3.0.1h_i386.deb
  20. #       wget -c http://tcts.fpms.ac.be/synthesis/mbrola/dba/br3/br3-000119.zip && unzip -x br3-000119.zip
  21. #       sudo mkdir -p /usr/share/mbrola/voices && sudo mv br3/br3 /usr/share/mbrola/voices
  22.  
  23.  
  24. TXT_FILE="$1"
  25. BASENAME=`echo "$TXT_FILE" | sed "s/\(.*\)\(\....$\)/\1/g"`
  26. echo "TTS (text-to-speach) ${TXT_FILE}"
  27. ext=${1##*.}
  28. # if it isn`t a TXT file, convert it first
  29. if [ "$ext" != "txt" ] ; then
  30.     TMP_FILE="/tmp/espeakfile-$$.txt"
  31.     # PDF
  32.     if [ "$ext" = "pdf" ] ; then
  33.         echo "converting from PDF to TXT"
  34.         pdftotext "${TXT_FILE}" "${TMP_FILE}"
  35.     fi
  36.     # ODT
  37.     if [ "$ext" = "odt" ] ; then
  38.         echo "converting from ODT to TXT"
  39.         odt2txt --subst=all "${TXT_FILE}" > "${TMP_FILE}"
  40.     fi
  41.     # DOC
  42.     if [ "$ext" = "doc" ] ; then
  43.         echo "converting from DOC to TXT"
  44.         antiword "${TXT_FILE}" > "${TMP_FILE}"
  45.     fi
  46.     TXT_FILE="${TMP_FILE}"
  47. fi
  48. sed -i 's/^[ ]*[0-9]*[ ]*$//g' "${TXT_FILE}"
  49.  
  50. rm -f "${BASENAME}_VBR.mp3"
  51.  
  52. ## create a FIFO "named pipe" to save space, so espeak write output to a pipe while lame encodes the file on the fly
  53. rm -f /tmp/voice.wav
  54. mkfifo /tmp/voice.wav
  55.  
  56. ## utiliza o sintetizador do mbrola (soa mais "humano")
  57. nice espeak -v mb-br1 -f "${TXT_FILE}" -s 145 -w /tmp/voice.wav 2>/dev/null & \
  58.  
  59. ## ??? the updated versions of espeak do not pass the phonetics to mbrola, but use it directly
  60. #nice espeak -v mb-br3 -f "${TXT_FILE}" | mbrola -t 1.0 -e /usr/share/mbrola/br3/br3 - /tmp/voice.wav 2>/dev/null & \
  61. ## OBS.: para controlar a velocidade, altere o parâmetro -t para 1.2 (mais lento), 1.0 (normal) ou 0.9 (mais rápido)
  62.  
  63. ## ALTERNATIVA: caso o MBROLA não esteja disponível, é possível utilizar somente o sintetizador do espeak (soa meio robotizado)
  64. # nice espeak -v brazil+f3 -p 25 -f "${TXT_FILE}" -w /tmp/voice.wav & \
  65.  
  66. ## converte pra mp3
  67. xterm -e nice lame -a --resample 16 -V 9 --vbr-new --lowpass 8 -f /tmp/voice.wav -o "${BASENAME}_VBR.mp3"
  68.  
  69. echo "...done! Voice saved as ${1}.mp3"