Поскольку вы передаете вывод pbpaste
команды непосредственно в say
команду , то, например, [[volm 0.35]]
должно быть частью того, что находится в буфере обмена, например, [[volm 0.35]]
должно предшествовать содержанию того, что на самом деле должно было быть сказано.
Я бы попробовал использовать следующее вместо того, что вы используете:
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 $!"
Обновление: если вы хотите придерживаться использования pbpaste
, то этот пример команды должен работать:
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 $!")
Обратите внимание на основные различия между командой внутри do shell script "..."
команды в вашем вопросе и моим ответом.
echo \"[[volm 0.35]]
добавляется перед LANG=...
и обратите внимание на пробел после ]]
.
LANG=en_US.UTF-8 pbpaste -Prefer txt
Теперь заключена в $(...)
котором используется Подстановка команд в, по существу, конкатенации , что получает отражение в трубе впереди say
команды .
А также согласование закрытия Двойной кавычки \"
, перед трубой для того say
, чтобы пойти с одним в echo \"[[volm 0.35]]
. Он работал в ограниченном тестировании без использования открывающих и закрывающих двойных кавычек, однако, вероятно, лучше заключить его в двойные кавычки, чтобы учесть то, что оболочка может попытаться излишне расширить.
Тем не менее, в моей системе использование 0.35
значения in [[volm 0.35]]
не сработало, так как трудно было понять разницу в громкости по сравнению с моими обычными настройками. Однако использование 0.3
в [[volm 0.3]]
разнице было заметно. (Это одна из причин, почему я использовал «например [[volm 0.35]]
» в своем первом предложении.)
[[volm 0.35]]
находится строка кода, которую я предоставил.