¿Cómo usar los valores predeterminados para establecer un elemento de una matriz de una matriz en un archivo de preferencias?

Estoy tratando de aumentar la velocidad de Text-To-Speech en mi Mac. El panel de Preferencias de GUI alcanza un máximo de 360 ​​palabras por minuto. Hago desarrollo de accesibilidad y esto es realmente un poco lento para mí.

Encontré el archivo de preferencias para la configuración de voz: com.apple.speech.voice.prefs.plist

y sé la clave: VoiceRateDataArray

Sin embargo, cuando leo la preferencia obtengo una matriz de matrices.

Entonces, ¿cómo escribo el comando de la línea de comando para sobrescribir el elemento específico de la matriz para acelerar la voz en OS X?

Parece que no puedo encontrar un ejemplo para tratar con matrices y el comando predeterminado.

Respuestas (1)

ADVERTENCIA: aunque esto hará lo que está pidiendo, se ha demostrado que hace que el sintetizador de voz del sistema sea increíblemente inestable y se bloquee constantemente, hasta el punto de dejarlo inutilizable. Estoy publicando esto aquí para referencia futura con respecto a la configuración de matrices anidadas, pero no recomiendo que nadie intente realmente lo que se muestra aquí.

Intenté cambiar esta configuración manualmente, pero parece que el sintetizador de voz no hablará más rápido que 360. Así es como puedes verlo por ti mismo:

  1. Primero, tenemos que obtener la clave "VoiceRateDataArray", para configurar las cosas que no deberían cambiar, de vuelta a sus valores originales, cuando hacemos nuestras modificaciones.

    defaults read com.apple.speech.voice.prefs VoiceRateDataArray
    

    La salida debería ser algo como esto:salida predeterminada

  2. Entonces, podemos hacer nuestras ediciones. Primero, debemos construir el comando predeterminado, que contiene la entrada que no deseamos cambiar y la versión modificada de la entrada que hacemos. Para este ejemplo, cambiaré la segunda entrada. La sintaxis básica es -array '(item1, item2, item3)' '(item1, item2, item3)'. Esto crea una matriz, con dos matrices anidadas dentro, según mi ejemplo:

    defaults write com.apple.speech.voice.prefs VoiceRateDataArray -array '(
        1835364215,
        200,
        205
    )' '(
        1886745202,
        184844493,
        400
    )'
    

    Como puede ver, el último elemento de la segunda segunda matriz ha cambiado de 271 a 400.

  3. Ahora tienes que reiniciar el sintetizador de voz:

    killall com.apple.speech.speechsynthesisd