[Ubuntu-BR] Um shellscript para a criação de audiolivros

luciano de souza luchyanus em gmail.com
Sexta Agosto 5 13:30:18 UTC 2011


Considerando as funções "open", "create", "convert" e "close", o
comportamento que esperava é o seguinte:


1. "open", chamada sem parâmetros, cria no diretório temporário uma
pasta em que salvarei os waves produto do comando Espeak. A função
funciona. A única mudança que terei de fazer é descobrir como verifico
se a pasta já existe, pois neste caso, a função não deve fazer nada.

2. "Create", é chamada com um parâmetro, o nome de um arquivo de texto
em que tenho o livro. então, faço chamadas como:
create "Um gosto e seis vinténs"
create "Crime e castigo"
create "As vinhas da ira"
"Create" utiliza as variáveis colocadas no cabeçalho do script. Aqui
também não observo nenhum erro. A pasta, criada por "open", foi
abastecida por "create". Lá encontro as faixas do livro em formato
wave.

3. "convert", chamada sem parâmetros, tem a função de converter os
arquivos waves, que não possuem extensão "wav", para "*.mp3", visto
que o meu reprodutor apenas lida com este formato. Eis o ponto em que
observo erro. Esperava que, após rodar "convert", na pasta temporária,
além dos arquivos wave, sem extensão, tivesse também arquivos "mp3",
com a extensão "mp3".
A seguir, na mesma pasta do arquivo de texto, fornecido como
parâmetro, criaria uma subpasta com o nome do livro e, para lá moveria
os arquivos *.mp3 localizados na pasta temporária. Chamaria esta
função de "move", mas ainda não há escrevi, posto que observei erro na
função "convert".
Ocorre que, ao rodar "convert", na pasta temporária, continuo a ter
somente os arquivos waves gerados por "create". Então, como "create"
possui parâmetro e roda e "convert" não possui parâmetros e falha,
julgo que o problema não seja este.

4. "close", sem parâmetros, por fim esvaziaria a pasta temporária e a removeria.

Então, depois de declaradas as funções, a chamada poderia ser algo assim:

#! /bin/bash

#
# Aqui declaram-se as variáveis e funções
#

open
create $1
convert
close

E por fim, o script seria chamado assim:

./audioshelf "Manual de Shellscript"



Em 04/08/11, Luciano de Souza<luchyanus em gmail.com> escreveu:
> Caros,
>
> Desejo converter um arquivo de texto em audiolivro. Para tanto criei um
> shellscript, mas ele dá erro na linha: for file in "$tmp_shelf/*"
>
> #!/bin/bash
>
> #Audioshelf
>
> speed=260
> amplitude=140
> voice="pt-br"
> split=20
> quality=128
> tmp_shelf="/tmp/audioshelf"
>
> open()
> {
> mkdir $tmp_shelf
> }
>
> create()
> {
> espeak -f "./$1" -w "$tmp_shelf/$1" -v $voice -s $speed -a $amplitude
> --split=$split
> }
>
> convert()
> {
> for file in "$tmp_shelf/*"
> do
> lame "$file" "$file.mp3" -b $quality
> done
>
> }
>
> convert
>
> O que poderia estar errado. Não tenho dúvidas quanto à sintaxe de espeak
> e de lame e, de qualquer modo, o Bash diz que o erro encontra-se na
> linha que mencionei.
>
> Luciano
>


-- 
Luciano de Souza




More information about the ubuntu-br mailing list