0 votos

Applescript: ¿Cómo guardar el texto a voz y convertirlo a mp3?

Tengo este script en applescript en un servicio automatizado. Funciona.

Sin embargo, no puedo hacer que se guarde en mi directorio deseado, o convertirlo a mp3.

En el nivel más básico, me gustaría guardar en /Users//Music/Mandarin-text2speech.

idealmente, me gustaría que los nombres de archivo aumenten incrementalmente, se conviertan en mp3 y eliminen el aiff.

Aquí está mi script básico que funciona por ahora.

on run {input, parameters}
  repetir con esteTexto en la entrada
      decir esteTexto con una velocidad de habla de 130 usando "Mei-Jia" guardando en el archivo (((ruta al escritorio) como cadena) & "audio.aiff")
  end repetir
end run

1voto

red_menace Puntos 111

El comando say ha sido capaz de guardar en diferentes formatos durante un tiempo. Los formatos admitidos pueden variar con la voz, pero para Mei-Jia se guardará en mp3 o mp4 directamente, por lo que no necesitas hacer ninguna conversión o eliminación.

EDICIÓN: Parece que me equivoqué sobre la codificación - no hay un mp3, pero puedes usar el script de shell say para establecer otras codificaciones como mp4:

on run {input, parameters}
    set saveFolder to (((path to music folder) as text) & "Mandarin-text2speech:")
    repeat with thisText in input
        set fileName to getUniqueName for "audio.mp4" from saveFolder
        set output to quoted form of POSIX path of (saveFolder & fileName)
        do shell script "say -v 'Mei-Jia' -r 130 -o " & output & " --file-format=mp4f " & quoted form of thisText

    end repeat
end run

to getUniqueName for someName from someFolder -- añadir un sufijo numérico según sea necesario para obtener un nombre único
    set {divider, counter} to {"_", 0} -- el texto divisor y el número de sufijo inicial
    set leadingZeros to 2 -- máximos ceros principales
    set here to -(offset of "." in ((reverse of text items of someName) as text)) - 1 -- dividir la extensión en el último punto
    set theName to text 1 thru here of someName
    if here is -1 then -- no extensión
        set theExtension to ""
    else
        set theExtension to text (here + 1) thru -1 of someName
    end if

    if counter < 1 then -- siempre comenzar con un sufijo
        set counter to 1
        if leadingZeros > 0 then set counter to text -(leadingZeros + 1) thru -1 of ("000000" & counter)
        set newName to theName & divider & counter & theExtension
    else -- añadir sufijo según sea necesario
        set counter to counter - 1 -- ajustar para el bucle while
        set newName to theName & theExtension
    end if
    tell application "System Events" to tell (get name of items of folder (someFolder as text) whose visible is true)
        repeat while it contains newName
            set counter to counter + 1
            if leadingZeros > 0 then set counter to text -(leadingZeros + 1) thru -1 of ("000000" & counter)
            set newName to theName & divider & counter & theExtension
        end repeat
    end tell

    return newName
end getUniqueName

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X