Wie verwende ich Defaults, um ein Element eines Arrays eines Arrays in einer Einstellungsdatei festzulegen?

Ich versuche, die Geschwindigkeit von Text-To-Speech auf meinem Mac zu erhöhen. Das GUI-Einstellungsfenster erreicht maximal 360 Wörter pro Minute. Ich mache Barrierefreiheitsentwicklung und das ist eigentlich ein bisschen langsam für mich.

Ich habe die Einstellungsdatei für Spracheinstellungen gefunden: com.apple.speech.voice.prefs.plist

und ich kenne den Schlüssel: VoiceRateDataArray

Wenn ich jedoch die Einstellung lese, erhalte ich ein Array von Arrays.

Wie schreibe ich also den Befehlszeilenbefehl, um das spezifische Element des Arrays zu überschreiben, um die Stimme in OS X zu beschleunigen.

Ich kann anscheinend kein Beispiel finden, um mit Arrays und dem Standardbefehl umzugehen.

Antworten (1)

WARNUNG: Obwohl dies das tut, was Sie verlangen, hat es gezeigt, dass es den System-Sprachsynthesizer unglaublich instabil macht und ständig abstürzt, bis zu dem Punkt, an dem es unbrauchbar wird. Ich poste dies hier als zukünftige Referenz in Bezug auf das Festlegen von verschachtelten Arrays, aber ich empfehle niemandem, das, was hier gezeigt wird, tatsächlich auszuprobieren.

Ich habe versucht, diese Einstellung manuell zu ändern, aber es scheint, dass der Sprachsynthesizer nicht schneller als 360 spricht. So können Sie sich selbst davon überzeugen:

  1. Zuerst müssen wir den Schlüssel "VoiceRateDataArray" holen, um die Dinge, die sich nicht ändern sollen, auf ihre ursprünglichen Werte zurückzusetzen, wenn wir unsere Änderungen vornehmen

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

    Die Ausgabe sollte in etwa so aussehen:Standardausgabe

  2. Dann können wir unsere Änderungen vornehmen. Zuerst müssen wir den Standardbefehl erstellen, der den Eintrag enthält, den wir nicht ändern möchten, und die modifizierte Version des Eintrags, den wir ändern möchten. Für dieses Beispiel werde ich den zweiten Eintrag ändern. Die grundlegende Syntax ist -array '(item1, item2, item3)' '(item1, item2, item3)'. Dies erstellt ein Array mit zwei verschachtelten Arrays darin, basierend auf meinem Beispiel:

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

    Wie Sie sehen können, hat sich das letzte Element des zweiten zweiten Arrays von 271 auf 400 geändert.

  3. Jetzt müssen Sie den Sprachsynthesizer neu starten:

    killall com.apple.speech.speechsynthesisd