Як змінити обсяг слова "сказати" в AppleScript?


3

Ось рядок з мого AppleScript, який говорить вибраний текст:

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

Я хотів би, щоб обсяг виступу був набагато нижчим. Я б не хотів цього робити, зменшуючи загальний обсяг системи.

Я можу успішно зменшити обсяг say у терміналі з таким кодом:

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

Але, коли я вставляю [[volm 0.35]] в моєму do shell script string, обсяг не змінюється.

Відповіді:


5

Так як ви трубопроводів вихідні дані 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]] "у моєму початковому реченні.)


0

Просто перемістіть першу подвійну цитату: ... "say [[volm 0.35]] This is a sentence"

У Terminal.app цитати взагалі не потрібні і say [[volm 0.35]] This is a sentence просто працює.


У вашій лінії коду вам доведеться передувати [[volm 0.35]] до скопійованого тексту.

У терміналі працюватиме наступний рядок:

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

але я не отримую, щоб це працювало у вашій лінії AppleScript належним чином - мабуть, я повинен уникнути одного або декількох елементів.


На жаль, я не був зрозумілий. Я намагаюся здійснити зміну гучності за допомогою AppleScript, а не безпосередньо в терміналі. Я не знаю, де [[volm 0.35]] належить до рядка коду, який я надав.
rubik's sphere

Деякі думки & amp; спостереження ... Хоча cat <(echo [[volm 0.35]] ) <(LANG=en_US.UTF-8 pbpaste -Prefer txt) | say, як є, працює добре в a bash оболонки , вона не працює в a sh оболонки , який використовує AppleScript. Тому я не вірю, що це пов'язано з тим, щоб уникнути будь-якої частини цієї особливості команду . Якщо ви відкриваєте термінал, якщо він є типовим оболонки , bashі набрали sh і натисніть введіть , потім виконайте те саме команду , це помилки з sh: syntax error near unexpected token `(', як і в AppleScript. Це виглядає як sh оболонки не хоче замінити процес.
user3439894

Хоча можна було промовити це команду с bash -c , напр. set this_say_Pid to (do shell script "bash -c \"cat <(echo [[volm 0.35]] ) <(LANG=en_US.UTF-8 pbpaste -Prefer txt) | say > /dev/null 2>&1 & echo $!\""), щоб фактично запустити його в bash оболонки , say команду потім працюватиме правильно, але ви не отримаєте pid з say команду що, звичайно, потім перемагає мету. Сподіваюся, що сфера Рубіка може використовувати те, що я запропонував у своїй відповіді, якщо немає іншого способу зробити це у відповідності з вашою пропозицією.
user3439894

Добре, я зрозумів шлях навколо питання sh оболонки мав процес заміщення процесу <(...) і запропонувати рішення з використанням pbpaste за допомогою заміни команд $(...) замість цього, як показано в моїй оновленій відповіді, яка все ще містить мою оригінальну відповідь, оскільки це показує інший спосіб досягти того самого код замість одного. :)
user3439894

0

проста відповідь:

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

Мені здається, що від 0,01 до 0,04 є меншим обсягом виведення.

Коли я спробував 0.25 або 0.35, обсяг не змінився.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.