OS X say
команда полезна для некоторых задач (таких как Skype, 'уведомляют меня, когда контакт прибывает онлайн), но это объявляет некоторые имена неправильно. Есть ли способ преподавать say
произносить слово по-другому?
Например, попытка:
say "Hi, Joel Spolsky"
'ol' походит на 'шар', а не 'старый'. Я хотел бы добавить исключение, которые говорят, "Объявляют Spolsky как это", вместо того, чтобы попытаться преподавать новые лингвистические правила. Я держал пари, что существует путь, так как он может объявить "iPhone", как Apple хочет.
Обновление - После некоторого исследования, вот то, что я изучил:
dtrace
при выполнении say
, Я нашел некоторые интересные файлы открытыми в/System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. Это - вероятно, речевой словарь, но они - весь двоичный файл, за исключением Омофонов, который является XML. Добавление записей в Омофоны ничего не делает - оно, вероятно, используется в речи в тексте. Они - также код, подписанный Apple - изменение их может препятствовать тому, чтобы работали некоторые программы. Мои предположения:
say
легкий слой кода сверху менеджера по Синтезу речи. Для Apple devs было бы легко добавить параметр командной строки для взятия пути к речевому словарю plist для альтернативного отображения фонемы, но они не сделали. Это может быть полезный проект с открытым исходным кодом записать лучшее say
.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
Ваши новые говорят, будет работать как старое, говорят, но с Вашим предпочтительным произношением.
Я не думаю, что Вы можете. Вы могли попытаться установить речь по умолчанию на другую в установках системы, или Вы могли ввести, как Вы хотите, чтобы вещи были объявлены. Например, "Привет, небо Jole Spole".
Нет никакого способа 'преподавать' say
программа, чтобы произнести слова по-другому. Как предложено выше, самый легкий способ получить произношение, которое Вы хотите, состоит в том, чтобы скорректировать написание Ваших слов, пока это не говорит их способ, которым Вы хотите.
Это - неудачное ограничение, учитывая, что Apple, кажется, большая часть пути там. Пользователи VoiceOver могут легко вставить свое собственное произношение с помощью Утилиты VoiceOver (Речь-> Произношение). Но, настройки VoiceOver, кажется, не применяются, чтобы "сказать" команду или меню Edit-> Speech-> "Start Speech" в Safari и другие обеспеченные Apple приложения.