Advertisement
Guest User

txt2mp3.sh

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