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