Так як ви трубопроводів вихідні дані 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=... і відзначте простір після ]].
The LANG=en_US.UTF-8 pbpaste -Prefer txt тепер укладено $(...) яка використовує підстановку команд, щоб, по суті, об'єднати те, що отримало відлуння з труби попереду say команду .
Так само як і відповідний закриваючий буквальний подвійний цитат \", перед труби до say, щоб піти з одним в echo \"[[volm 0.35]]. Він працював у обмеженому тестуванні без використання відкритих і закриваючих подвійних котирувань, проте, можливо, краще вкласти його в подвійні котирування, щоб пояснити щось оболонки може спробувати розширитися.
Це сказав, на моїй системі використання 0.35 для значення в [[volm 0.35]] не спрацювала добре в тому, що було важко сприймати різницю в обсязі від мого нормального налаштування. Однак користуватися 0.3 в [[volm 0.3]] різниця була помітна. (Це одна з причин, чому я використовував "напр. [[volm 0.35]] "у моєму початковому реченні.)
[[volm 0.35]]належить до рядка коду, який я надав.