Come modificare il volume di "say" in AppleScript?

3

Ecco una riga del mio AppleScript che parla del testo selezionato:

set this_say_Pid to do shell script "LANG=en_US.UTF-8 pbpaste -Prefer txt | say > /dev/null 2>&1 & echo $!"

Vorrei che il volume della conversazione fosse molto più basso. Preferirei non farlo riducendo il mio volume generale del sistema.

Posso ridurre con successo il volume di say in Terminal con il seguente codice:

say "[[volm 0.35]] This is a sentence"

Tuttavia, quando inserisco [[volm 0.35]] nella mia stringa do shell script , il volume non cambia.

    
posta rubik's sphere 18.03.2017 - 08:57
fonte

3 risposte

5

Dato che conduci l'output del comando pbpaste direttamente a say comando , ad es. [[volm 0.35]] dovrebbe essere una parte di ciò che è presente negli appunti come ad es. [[volm 0.35]] deve precedere il contenuto di ciò che sarebbe stato effettivamente detto.

Vorrei provare a utilizzare quanto segue al posto di ciò che stai utilizzando:

set howLoudAndWhatToSay to "[[volm 0.35]] \"" & (get the clipboard as string) & "\""

set this_say_Pid to do shell script "say " & howLoudAndWhatToSay & " > /dev/null 2>&1 & echo $!"

Aggiornamento: se vuoi continuare ad usare pbpaste , allora questo comando di esempio dovrebbe funzionare:

set this_say_Pid to (do shell script "echo \"[[volm 0.35]] $(LANG=en_US.UTF-8 pbpaste -Prefer txt)\" | say > /dev/null 2>&1 & echo $!")

Nota le differenze principali tra il comando all'interno del comando do shell script "..." nella tua domanda e la mia risposta.

  • echo \"[[volm 0.35]] viene aggiunto davanti a LANG=... e nota lo spazio dopo ]] .
  • Il LANG=en_US.UTF-8 pbpaste -Prefer txt è ora racchiuso in $(...) che sta usando Command Substitution per, in sostanza, concatenare ciò che viene echeggiato alla pipe prima di say comando .

  • Oltre a una virgola letterale di chiusura corrispondente, \" , prima della pipe a say , per andare con quella in echo \"[[volm 0.35]] . Ha funzionato in test limitati senza l'uso delle virgolette di apertura e chiusura, tuttavia è probabilmente meglio racchiuderlo tra virgolette per tenere conto di qualcosa che la shell potrebbe provare a espandere inutilmente.

Detto questo, sul mio sistema che utilizza 0.35 per il valore in [[volm 0.35]] non ha funzionato bene in quanto è stato difficile percepire la differenza di volume dalla mia impostazione normale. Tuttavia utilizzando 0.3 in [[volm 0.3]] la differenza era notevole. (Questo è uno dei motivi per cui ho usato "ad esempio [[volm 0.35]] " nella mia frase di apertura.)

    
risposta data 18.03.2017 - 10:30
fonte
0

Sposta semplicemente la prima virgoletta doppia: ... "say [[volm 0.35]] This is a sentence"

In Terminal.app le virgolette non sono obbligatorie e say [[volm 0.35]] This is a sentence funziona semplicemente.

Nella tua riga di codice dovresti anteporre [[volm 0.35]] al testo copiato.

In Terminale la seguente linea funzionerebbe:

cat <(echo [[volm 0.35]] ) <(LANG=en_US.UTF-8 pbpaste -Prefer txt) | say 

ma non riesco a farlo funzionare correttamente sulla tua linea AppleScript - probabilmente devo sfuggire a uno o più elementi.

    
risposta data 18.03.2017 - 09:07
fonte
0

risposta semplice:

say "[[volm 0.04]] This is a sentence"

Mi sembra che da 0,01 a 0,04 sia il volume più piccolo in uscita.

Quando ho provato 0.25 o 0.35 il volume non è cambiato.

    
risposta data 29.06.2017 - 00:49
fonte

Leggi altre domande sui tag