[Mac OS X] Используем голосовые возможности OS X в командной строке

9

pic_0

Пользователи OS X знают о голосовых возможностях системы. Суть этих возможностей — преобразование текста в голос. Обычно они доступны во многих Cocoa-приложениях через меню ПравкаПроговаривание текста.
Вот пример из TextEdit.app:

pic_1

К сожалению, поддержки русского языка в голосовой системе не реализовано. И именно поэтому русскоговорящие пользователи обычно не используют этот сервис.

Но голосовые возможности иногда бывает полезно использовать в командной строке, несмотря на языковые ограничения. С английским-то языком, у сервиса все в полном порядке. 🙂

Реализуется это при помощи команды say.

Самое простое применение — попробуйте ввести команду:

say Hello my friend!

Есть опция -v, позволяющая выбрать голос, которым будет произносится введенный текст. Посмотреть список всех имеющихся в системе голосов можно по команде:

say -v?

pic_2

Некоторые из них достаточно забавны. Выбирайте в списке любой голос и пробуйте, например:

say -v Bells Hello my friend!

Второе простое применение — чтение текстового файла. Использование:

cat filename | say

где вместо filename — имя файла, текст из которого нужно прочитать.

Еще одно простое применение — произнесение вводимого с клавиатуры текста. Для этого просто введите команду say без каких либо аргументов и начинайте вводить текст, по завершению вводимой строки нажимайте как обычно Enter и именно в этот момент строка будет произнесена.

pic_3

Попробуйте, как на картинке ввести текст «Mac OS X«. Будете приятно удивлены, тем, что система произнесет последнюю букву «Х» именно как «тэн», а не как можно было бы ожидать «экс». 😀

Так же можно озвучить, то, что выводит любая команда на экран терминала. Например:

ls | say

или вообще послушать man на какую-либо команду :):

man ls | say

А теперь рассмотрим реальный пример, когда использование этого сервиса может быть действительно полезно. Идея проста — нам никто не мешает использовать голосовые оповещения по завершению какой-либо долго выполняющейся команды.

В предыдущих заметках о создании из командной строки установочного диска OS X Lion в виде DVD-диска и в виде USB-флешки как раз и используются такие достаточно долго выполняющиеся команды. И вот как раз их можно очень легко модифицировать, дописав в конец:

; say All done

Пример модификации команды для USB-флешки:

asr restore --source /Applications/Install\ Mac\ OS\ X\ Lion.app/Contents/SharedSupport/InstallESD.dmg --target /dev/disk1s2 --erase --noprompt; say All done

Пример модификации команды для DVD-диска:

hdiutil burn /Applications/Install\ Mac\ OS\ X\ Lion.app/Contents/SharedSupport/InstallESD.dmg; say All done

Тогда, после завершения выполнения этих команд, вы услышите фразу All done, что и будет сигналом о завершении записи диска. Это действительно удобно.

Удачи!

9 комментариев

  1. 0
    Alexander Velikanov

    В Lion’s есть поддержка русского языка при проговаривании текста. Голос всего один — Milena.

    • 0
      Сергей

      Alexander, сначало послушай какой там голос а потом кукарекай

      • 0

        Сергей, В общем и целом, Милена мило все проговаривает, правда с ударениями не все в порядке (послушайте, как она произносит слова «дописав в конец» из этого обзора), часто окает, совершенно безобразно произносит английские слова и фразы, а также формулы.

    • 0
      Игорь Соловьев

      Alexander, say -v Milena Test
      Voice `Milena' not found

      По-умолчанию в Lion-е русских голосов нет. Можно, правда, установить через Системные настройки, скачается 479 мбайт.

      Качество русского языка — не очень высокое. Возможно, из-за этого и не ставится по-умолчанию. 🙂

      Хотя простенькие фразы (типа Запись диска завершена), действительно использовать можно вполне сносно.

      Так что поправка Alexander Velikanov принимается. 🙂

  2. 0
    Сергей

    Милена хорошо говорит по-русски. А MAC OS X проговаривает «МАК ОС Икс». И у ней милый рязанский акцент, когда надо проговорить английский текст.

  3. 0
    Сергей

    О, майн готт. Если вместо say All done попросить Милену
    say Я кончила — это будет нечто :)))

  4. 0
    Alexander nomatter

    не знал что точка с запятой заменяет &&
    я обычно пишу rm -rf /* && say All clear
    =)

    • 0

      Alexander, Не заменяет. Просто && проверяет код завершения первой команды и если завершение корректно, то выполняет следующую команду, а если первая завершилась ошибкой, то не выполняет. Точка с запятой ничего не проверяет. Т.е. в принципе можно использовать и &&, но это лучше использовать в скрипте, проверяя на завершение и меняя сообщение от say в зависимости от этого. Например, можно в случае ошибки сообщить, что Запись завершена с ошибкой.

Авторизуйтесь Чтобы оставить комментарий