Come usare i Default per impostare un elemento di un array di un array in un file di preferenze?

4

Sto cercando di aumentare la velocità del Text-To-Speech sul mio Mac. Il riquadro delle preferenze della GUI raggiunge un massimo di 360 parole al minuto. Faccio sviluppo dell'accessibilità e questo è in realtà un po 'lento per me.

Ho trovato il file delle preferenze per le impostazioni vocali: com.apple.speech.voice.prefs.plist

e conosco la chiave: VoiceRateDataArray

Tuttavia, quando leggo la preferenza ottengo una matrice di matrici.

Quindi, come scrivo il comando della riga di comando per sovrascrivere l'elemento specifico dell'array per accelerare la voce in OS X.

Non riesco a trovare un esempio per gestire gli array e il comando defaults.

    
posta FTNomad 03.06.2015 - 17:17
fonte

1 risposta

2

ATTENZIONE: Anche se questo farà ciò che stai chiedendo, ha dimostrato di rendere il sintetizzatore vocale del sistema incredibilmente instabile e di bloccarsi costantemente, al punto da renderlo inutilizzabile. Sto postando questo qui per riferimento futuro per quanto riguarda l'impostazione di array annidati, ma non consiglio a nessuno di provare effettivamente ciò che è mostrato qui.

Ho provato a cambiare questa impostazione manualmente, ma sembrerebbe che il sintetizzatore vocale non parlerà più velocemente di 360. Ecco come puoi vedere da solo:

  1. Per prima cosa, dobbiamo ottenere il tasto "VoiceRateDataArray", per impostare le cose che non dovrebbero cambiare, ritornare ai loro valori originali, quando apportiamo le nostre modifiche

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

    L'output dovrebbe essere simile a questo:

  2. Quindi, possiamo apportare le nostre modifiche. Innanzitutto, dobbiamo costruire il comando defaults, contenente la voce che non vogliamo modificare e la versione modificata della voce che facciamo. Per questo esempio, cambierò la seconda voce. La sintassi di base è -array '(item1, item2, item3)' '(item1, item2, item3)' . Questo crea un array, con due array annidati al suo interno, basato sul mio esempio:

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

    Come puoi vedere, l'ultimo elemento del secondo secondo array è cambiato da 271 a 400.

  3. Ora devi riavviare il sintetizzatore vocale:

    killall com.apple.speech.speechsynthesisd
    
risposta data 03.06.2015 - 21:41
fonte

Leggi altre domande sui tag