AppleScript para audio

1

Quiero guardar el siguiente texto hablado en un archivo de audio que puedo reproducir en mi iPod (así .mp3 o algo así).

say "the company [[slnc 1200]]" using "Alex"
say "une entreprise [[slnc 1200]]" using "Thomas"
say "a farm [[slnc 1500]]" using "Alex"
say "une ferme [[slnc 1200]]" using "Thomas"

Por lo tanto, todo lo que mi mac dice durante la ejecución de este AppleScript debe guardarse en un solo archivo de audio. No quiero 4 audiofiles diferentes, en cambio, me gustaría tener un audiofile (grande) con todo el audio. ¿Es esto posible?

Gracias de antemano.

    
pregunta OlivierVR 26.06.2015 - 20:14

1 respuesta

0

Seguro que puedes! Prueba esto:

say "the company [[slnc 1200]]" using "Alex" saving to ((path to home folder as string) & "TheCompany.aiff")

Tenga en cuenta que debe usar el formato AIFF, que los iPods son compatibles. Esto lo guardará en tu directorio de inicio.

Debe instalar FFMPEG para la parte final de este script. Es posible que tengas que instalar primero las herramientas para desarrolladores. Ejecute este comando en la Terminal para verificar:

xcode-select --install

Una vez que se haya completado, debes instalar un administrador de paquetes para FFMPEG. Personalmente uso MacPorts, para eso son estas instrucciones. Instale MacPorts desde aquí , seleccionando la versión correcta para su sistema operativo. Una vez que esté instalado, ejecute sudo port selfupdate && sudo port install ffmpeg en la Terminal e ingrese su contraseña. Una vez que esté completo, este AppleScript debería funcionar ahora:

global file_index
global temp_files
set file_index to 0
set temp_files to {}
set finished_filename to "result.aiff"

say "the company [[slnc 1200]]" using "Alex" saving to new_temp_file()
say "une entreprise [[slnc 1200]]" using "Thomas" saving to new_temp_file()
say "a farm [[slnc 1500]]" using "Alex" saving to new_temp_file()
say "une ferme [[slnc 1200]]" using "Thomas" saving to new_temp_file()

set final_command to "echo \""
repeat with filename in temp_files
    set final_command to final_command & "file " & POSIX path of filename & "
"
end repeat
set final_command to final_command & "\"|/opt/local/bin/ffmpeg -y -f concat -i - -c copy ~/" & finished_filename
do shell script final_command

#cleanup
repeat with current_file in temp_files
    do shell script "rm " & POSIX path of current_file
end repeat

on new_temp_file()
    set file_index to file_index + 1
    set current_temp_file to ((path to temporary items) as string) & "file" & file_index & ".aiff"
    set temp_files to temp_files & {current_temp_file}
    return current_temp_file
end new_temp_file

Esto combinará lo que dice en la lista con el archivo que especifique en la variable finished_filename. Puede agregar la cantidad de "frases" que desee, simplemente mantenga la misma sintaxis que usé (guardando en new_temp_file ()) y estará listo para comenzar.

    
respondido por el William T Froggard 26.06.2015 - 20:27

Lea otras preguntas en las etiquetas