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.)