AppleScript per l'audio

1

Voglio salvare il seguente testo parlato in un file audio che posso riprodurre sul mio iPod (quindi .mp3 o qualcosa del genere).

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"

Quindi tutto ciò che il mio Mac dice durante l'esecuzione di questo AppleScript dovrebbe essere salvato in un audiofile. Non voglio 4 diversi audiofili, invece, mi piacerebbe avere un (grande) audiofilo con tutto l'audio. È possibile?

Grazie in anticipo.

    
posta OlivierVR 26.06.2015 - 20:14
fonte

1 risposta

0

Sicuro! Prova questo:

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

Nota che devi usare il formato AIFF, che gli iPod supportano. Questo lo salverà nella tua directory home.

Devi installare FFMPEG per la parte finale di questo script. Potrebbe essere necessario installare prima gli strumenti di sviluppo. Esegui questo comando in Terminale per verificare:

xcode-select --install

Una volta completato, è necessario installare un gestore di pacchetti per FFMPEG. Personalmente uso MacPorts, ecco perché sono queste istruzioni. Installa MacPorts da qui , selezionando la versione corretta per il tuo sistema operativo. Una volta installato, esegui sudo port selfupdate && sudo port install ffmpeg nel Terminale e inserisci la tua password. Una volta completato, questo AppleScript dovrebbe ora funzionare:

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

Questo unirà le parole nella lista al file specificato nella variabile finished_filename. Puoi aggiungere comunque molti "say" che vuoi, basta mantenere la stessa sintassi che ho usato (salvando su new_temp_file ()) e sarai pronto per partire!

    
risposta data 26.06.2015 - 20:27
fonte

Leggi altre domande sui tag