Solicitud de asistencia con truncar/recorte de una cadena en una acción de automator utiliza para crear texto-a-voz, archivos de audio a partir de una selección de texto que van desde los 30 y tantos personajes a 800+, que es demasiado largo para un nombre de archivo.

En fin, estoy tratando de truncar una cadena de 30 caracteres y que pase a la «Texto a Archivos de Audio» de la acción como el nombre de archivo.

Flujo de trabajo básico es:

Seleccionar texto
Iniciar la siguiente Acción de Automator a través de Menú de los Servicios de

  1. «Establecer el Valor de la Variable» a la entrada (por ejemplo, el texto seleccionado) y definir como la síntesis de voz
  2. «Establecer el Valor de la Variable» a la entrada (por ejemplo, el texto seleccionado) y definir como nombre de archivo
  3. «Obtener el Valor de la Variable» nombre de archivo
  4. «Ejecutar AppleScript»

    on run {input, parameters}
        set theResult to input as string
        set finalResult to input as string
        set txtLength to (length of theResult)
        if txtLength > 30 then
            set finalResult to (characters 1 thru 30 of theResult) as string
        end if
        return finalResult
    end run
    
  5. «Valor de ajuste de la Variable de entrada» (por ejemplo, el texto seleccionado) y definir como nombre de archivo

  6. «Obtener el Valor de la Variable» síntesis de voz
  7. «Texto a Archivos de Audio» con Guardar Como: ajuste a «nombre de archivo»
  8. «Codificar MPEG Audio»

Cualquier ayuda/sugerencias se agradece enormemente!

Saludos,

Zephyr

  • Además de ser seguro de si el Applescript en el paso 4 está libre de errores, no puedo encontrar ninguna información sobre cómo las variables se pasan en/fuera de un «Ejecutar Applescript» acción y de allí a través del resto de acciones.
InformationsquelleAutor Zephyr Mays | 2013-10-04

2 Comentarios

  1. 3

    En general, puede pasar de la applescript para la siguiente acción lo que sea que necesita utilizando el «retorno» comando al final del código. En su caso, aunque la acción de automator «Texto a Archivos de Audio» no acepta un nombre de variable por lo que si usted quiere que todo el control que usted necesita otro método. Por suerte que la acción de automator pueden ser reemplazados fácilmente en el applescript código con un simple «decir» de comandos.

    Para crear su automator servicio y recibir el texto seleccionado. A continuación, agregue un applescript acción y utilice el siguiente código. A continuación, agregue una «Codificar MPEG audio» de la acción.

    Para el applescript código sólo tiene que modificar el voiceName y saveFolder variables con los valores de su elección. El saveFolder ruta debe terminar con un signo de dos puntos (:). Tenga en cuenta que yo uso 26 en lugar de 30, porque sumamos «.fia» al final del nombre de archivo… para obtener un total de 30 caracteres.

    on run {input, parameters}
        set voiceName to "Jill"
        set saveFolder to path to desktop as text
    
        set selectedText to item 1 of input
        if (length of selectedText) > 26 then
            set fileName to text 1 thru 26 of selectedText
        else
            set fileName to selectedText
        end if
        set fileName to fileName & ".aif"
        set filePath to saveFolder & fileName
    
        say selectedText using voiceName saving to file filePath
    
        return {POSIX path of filePath}
    end run
    

    Si usted necesita para determinar su saveFolder utilizar esto para obtener la ruta de acceso. Ejecute este código y copiar/pegar el resultado en el saveFolder variable anterior.

    (choose folder) as text
    
    • muchas gracias por la ayuda. Una combinación de sus consejos y mi ensayo y error, tengo que trabajar. Un millón de gracias!
    • Publicaremos la solución tan pronto como puede editar/post correctamente.
  2. 0

    Aquí lo trabajado:

    Seleccionar texto

    Iniciar la siguiente Acción de Automator a través de Menú de los Servicios de

    «Establecer el Valor de la Variable» a la entrada (por ejemplo, el texto seleccionado) y definir como la síntesis de voz

    «Ejecutar AppleScript»

    on run {input, parameters}
        set theResult to input as string
        set finalResult to input as string
        set txtLength to (length of theResult)
        if txtLength > 50 then
            set finalResult to characters 1 thru 50 of theResult as string
        end if
        return finalResult as string
    end run
    

    «Valor de ajuste de la Variable de entrada» (por ejemplo, el texto seleccionado) y definir como nombre de archivo

    «Obtener el Valor de la Variable» síntesis de voz y ignorar esta acción de entrada del

    «Texto a Archivos de Audio» con Guardar Como: ajuste a «nombre de archivo» y » guardar como ubicación.

    «Codificar MPEG Audio»

    Resultado: un archivo de audio del texto seleccionado hablado por la voz deseada con un nombre de archivo de conjunto a los 50 primeros caracteres del texto seleccionado.

    ( I aumento de los personajes para disminuir el número de nombres de archivo duplicados me estaba poniendo como parte de mi flujo de trabajo.)

    @regulus6633 : su respuesta es más compacto y elegante, pero tengo que aprender más acerca de cómo applescript obtiene sus entradas y devuelve los resultados. Gracias de nuevo.

Dejar respuesta

Please enter your comment!
Please enter your name here