Как я могу измениться, как OS X 'говорит', что команда произносит слово?

OS X say команда полезна для некоторых задач (таких как Skype, 'уведомляют меня, когда контакт прибывает онлайн), но это объявляет некоторые имена неправильно. Есть ли способ преподавать say произносить слово по-другому?

Например, попытка:

say "Hi, Joel Spolsky"

'ol' походит на 'шар', а не 'старый'. Я хотел бы добавить исключение, которые говорят, "Объявляют Spolsky как это", вместо того, чтобы попытаться преподавать новые лингвистические правила. Я держал пари, что существует путь, так как он может объявить "iPhone", как Apple хочет.


Обновление - После некоторого исследования, вот то, что я изучил:

  1. Синтез речи по тексту разделяется между превращением текста к фонемам, и затем фонемы превращены в аудио с помощью речи. Изменение речи не производит фонемы.
  2. У менеджера по Синтезу речи есть некоторые функции для превращения текста к фонемам и метода для регистрации речевого словаря, который добавит новые карты текстовой фонемы. Однако речевой словарь Apple должен быть в двоичной форме - я не нашел plist XML.
  3. Используя dtrace при выполнении say, Я нашел некоторые интересные файлы открытыми в/System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. Это - вероятно, речевой словарь, но они - весь двоичный файл, за исключением Омофонов, который является XML. Добавление записей в Омофоны ничего не делает - оно, вероятно, используется в речи в тексте. Они - также код, подписанный Apple - изменение их может препятствовать тому, чтобы работали некоторые программы.
    • PrefixDictionary
    • CartNames
    • CartLite
    • SymbolDictionary
    • Омофоны
  4. Существуют способы добавить текстовые версии элементов интерфейса приложения так работы VoiceOver, многие из которых разработчик добирается бесплатно, но существуют хитрые биты. Стандарт здесь, кажется, для использования фонетического написания по мере необходимости.

Мои предположения:

  1. say легкий слой кода сверху менеджера по Синтезу речи. Для Apple devs было бы легко добавить параметр командной строки для взятия пути к речевому словарю plist для альтернативного отображения фонемы, но они не сделали. Это может быть полезный проект с открытым исходным кодом записать лучшее say.
  2. Skype, вероятно, использует менеджера по Синтезу речи непосредственно, не оставляя рычагов для изменения способа, которым имена моего друга объявлены кроме написания их фонетически, который глуп.
  3. Самый легкий способ сделать версию командной строки say то, как предложенный JRobert.

Вот моя быстрая реализация, с помощью предложения написания Doug Harris:

#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say

Наконец, некоторый забавный материал командной строки:

# Apple is weird
sqlite3 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources/Tuples .dump
# Get too much information about what files are being opened
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
# Just fun
say -v bad "Joel Spolsky Spolsky Spolsky Spolsky Spolsky, Joel Spolsky Spolsky Spolsky Spolsky Spolsky"
echo "scale=1000; 4*a(1)" | bc -l | say
13
задан 09.09.2012, 05:49

4 ответа

  • Создайте список пар слова [spolsky spowlsky; joel jole;...].
  • Создайте сценарий в своем любимом языке сценариев, который заменяет словами в его списке параметров согласно Вашему списку пар слова и передает измененный список параметров "/usr/bin/say".
  • Сделайте исполняемый файл сценария, звоните, он "говорит" и поместил его в папку, которая появляется ранее в Вашем $PATH, чем делает "/usr/bin".
  • Добавьте варианты написания к своему списку пар слова, поскольку Вы находите больше слов, которые Вы хотели бы объявленный по-другому.

Ваши новые говорят, будет работать как старое, говорят, но с Вашим предпочтительным произношением.

6
ответ дан 07.12.2019, 11:33

Я не думаю, что Вы можете. Вы могли попытаться установить речь по умолчанию на другую в установках системы, или Вы могли ввести, как Вы хотите, чтобы вещи были объявлены. Например, "Привет, небо Jole Spole".

2
ответ дан 07.12.2019, 11:33

Нет никакого способа 'преподавать' say программа, чтобы произнести слова по-другому. Как предложено выше, самый легкий способ получить произношение, которое Вы хотите, состоит в том, чтобы скорректировать написание Ваших слов, пока это не говорит их способ, которым Вы хотите.

0
ответ дан 07.12.2019, 11:33

Это - неудачное ограничение, учитывая, что Apple, кажется, большая часть пути там. Пользователи VoiceOver могут легко вставить свое собственное произношение с помощью Утилиты VoiceOver (Речь-> Произношение). Но, настройки VoiceOver, кажется, не применяются, чтобы "сказать" команду или меню Edit-> Speech-> "Start Speech" в Safari и другие обеспеченные Apple приложения.

2
ответ дан 07.12.2019, 11:33

Теги

Похожие вопросы