say
Команда OS X полезна для некоторых задач (таких как Skype, «уведомлять меня, когда контакт подключается к сети), но она произносит некоторые имена неправильно. Есть ли способ научить say
произносить слово по-другому?
Например, попробуйте:
say "Hi, Joel Spolsky"
«Ол» звучит как «мяч», а не «старый». Я хотел бы добавить исключение, которое говорит: «Произносите Спольски, как это», а не пытаться учить новым лингвистическим правилам. Бьюсь об заклад, есть способ, так как он может произносить «iphone», как хочет Apple.
Обновление - после некоторых исследований вот что я узнал:
- Преобразование текста в речь делится между превращением текста в фонемы, а затем фонемы превращаются в звук с помощью голоса. Изменение голоса не влияет на фонемы.
- Синтез речь менеджер имеет некоторые функции для поворота текста в фонемы , и способ регистрации словаря речи , который добавит новые карты текст фонем. Тем не менее, речевой словарь Apple должен быть в двоичном виде - я не нашел никакого plist XML.
- Используя
dtrace
во время работыsay
, я нашел несколько интересных файлов, открытых в /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. Вероятно, это речевой словарь, но все они двоичные, за исключением гомофонов, то есть XML. Добавление записей в Homophones ничего не делает - это, вероятно, используется в преобразовании речи в текст. Они также имеют код, подписанный Apple - их изменение может помешать работе некоторых программ.- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- Омофоны
- Есть способы добавить текстовые версии элементов интерфейса приложения, чтобы VoiceOver работал, многие из которых разработчик получает бесплатно, но есть некоторые хитрости . Стандарт здесь, кажется, должен использовать фонетическое правописание по мере необходимости.
Мои догадки:
say
это легкий слой кода поверх Менеджера синтеза речи. Разработчикам Apple было бы легко добавить параметр командной строки, чтобы указать путь к списку речевого словаря для сопоставления альтернативных фонем, но они этого не сделали. Это может быть полезным проектом с открытым исходным кодом, чтобы написать лучшеsay
.- Skype, вероятно, использует Speech Synthesis Manager напрямую, не оставляя зацепок для изменения способа произнесения имен моего друга, кроме фонетического произношения, что глупо.
- Самый простой способ сделать версию командной строки
say
- это то, как предложил JRobert.
Вот моя быстрая реализация, используя предложение орфографии Дуга Харриса:
#!/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
say
который используете с-v
?say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
. Список голосов можно найти в Системных настройках -> Речь -> Текст в речь. Проблема в переводе фонем, а не в синтезе голоса. Если вы вызываете библиотеку напрямую, вы можете установить пользовательские фонемы: developer.apple.com/mac/library/documentation/Carbon/Reference/… Поиск на моем диске, чтобы увидеть, использовали ли разработчики Apple .plist ...Ответы:
Ну, вы также можете ввести именно фонемы, которые вы хотите сказать. Синтаксис не так сложен.
Пример:
[[inpt PHON]] ХААИ.
Проверьте эту ссылку, чтобы узнать больше: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1
источник
Ваше новое слово будет работать как старое, но с вашим предпочтительным произношением.
источник
Ответ @ bruno-carvalho ответил на этот вопрос для меня. Но мне также нужно было
[[inpt TEXT]]
найти тег, чтобы заставить команду say вернуться к обычному чтению (синтезированию речи) текста. Например:say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?
Надеемся, что добавление этого в ответ поможет последующим читателям этого вопроса.
источник
Я не думаю, что ты можешь. Вы можете попытаться установить голос по умолчанию на другой в системных настройках, или вы можете напечатать, как вы хотите, чтобы вещи произносились. Например, «Привет, Джоул Споул Скай».
источник
Это досадное ограничение, учитывая, что Apple, кажется, большую часть пути туда. Пользователи VoiceOver могут легко вставить свои собственные произношения с помощью утилиты VoiceOver (Speech-> произношение). Но настройки VoiceOver, похоже, не применяются к команде «сказать» или к меню «Правка» -> «Речь» -> «Начать речь» в Safari и других приложениях Apple.
источник
Нет способа «научить»
say
программу произносить слова по-разному. Как указывалось выше, самый простой способ получить желаемое произношение - это настроить написание слов, пока оно не произнесет их так, как вы хотите.источник