Как вы можете заставить OS X сказать, что команда говорит символы IPA?

1460
Benjamin Nolan

У меня есть около 200 строк Беовульфа, которые мы с несколькими друзьями перевели в Международный фонетический алфавит около полутора лет назад. В то время одним из инструментов, который мы использовали для проверки произношения, была sayкоманда OS X.

Вот первые шесть строк в соответствии с переводом Klaeber стихотворения, преобразованного в IPA, которое, я знаю, наверняка sayможет быть правильно прочитано, потому что я сам запустил его на MacBook, из которого я набираю этот самый вопрос:

hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum ˈðeːodˌkyniŋɡɑ θrymː jeˈfruːnon huː ðɑ æðelɪŋɡɑs ˈelːen ˈfremːedon! oft ʃyld ʃefiŋ ˈʃæɑðenɑ θræːɑtum, ˈmɑniɣum mæjθum ˈmeːodusetlə ovˈtæːax, 'ejzudə eːorɑs, syðːɑnærest wæːɑrð 

Теперь, как я ни стараюсь, я больше не могу заставить его правильно прочитать любую из вышеперечисленных строк. Я перепробовал все англоязычные голоса (до 10,5 голосов было весело ), но голоса, которые я наверняка работал раньше, такие как Фиона и Кейт, теперь, похоже, полностью игнорируют персонажей IPA.

Вот несколько не-DRY-у тестовых команд, которые я использовал на этот раз:

say --rate=150 --voice=Fiona "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" say --voice=Fiona "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" say --rate=150 --voice=Fiona "hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum" say --voice=Fiona "hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum" say --voice=Fiona hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum say --voice=Fiona /hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/ 

Но все они полностью пропускают символы IPA, за исключением æ, который иногда произносится. ɣ конечно, больше никогда не превращается в синтез, что он определенно делал в прошлый раз.

Я что-то упустил, или, возможно, по какой-то причине они удалили функцию IPA в недавнем обновлении? Я почти уверен, что мы использовали Mavericks, но это мог быть Snow Leopard.

5
Догадывающиеся ссылки на цитаты Второй мировой войны осуждаются в вопросах, @ncdownpat. ;) Benjamin Nolan 9 лет назад 0
Я думал об этом немного больше, и я сделал пустой свой ноутбук и переустановил OS X с нуля в начале этого года. Я предполагаю, что, возможно, что-то было в Leopard или Snow Leopard, которые поддерживали эту функцию, которая была удалена в более поздней версии, например, X11 был удален между 10.6 и 10.7. Было бы позором, хотя. Похоже, мне лучше написать свои собственные хуки в движке TTS, чтобы говорить на старом английском. : / Benjamin Nolan 9 лет назад 0

2 ответа на вопрос

6
OldPeculier

Here's a Ruby script that takes a string of Unicode IPA text and converts it to OS X's say command phonetic syntax.

Slap this Ruby code into a file—let's call it ipa2say.rb. Make the file executable (i.e. chmod u+x ipa2say.rb). Execute the executable, piping some IPA text to it. Out will come some ASCII phonetic text.

Then run say with the [[inpt PHON]] directive.

So, an example. Let's say you want to say the IPA text "ˌɪntərˈnæʃənəl fəˈnɛtɪk ˈælfəˌbɛt fəˈrɛvər". From the command line:

echo "ˌɪntərˈnæʃənəl fəˈnɛtɪk ˈælfəˌbɛt fəˈrɛvər" | ./ipa2say.rb 

It will spit out:

IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr 

You then run: say "[[inpt PHON]]IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr"

Here's the script.

#!/usr/bin/ruby -w map = { 'æ' => 'AE', 'eɪ' => 'EY', 'ɑ' => 'AO', 'əˈ' => 'AX', 'i' => 'IY', 'ɛ' => 'EH', 'ɪ' => 'IH', 'aɪ' => 'AY', 'ɪ' => 'IX', 'ɑ' => 'AA', 'u' => 'UW', 'ʊ' => 'UH', 'ʌ' => 'UX', 'oʊ' => 'OW', 'aʊ' => 'AW', 'ɔɪ' => 'OY', 'b' => 'b', 'ʧ' => 'C', 'd' => 'd', 'ð' => 'D', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'ʤ' => 'J', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n', 'ŋ' => 'N', 'p' => 'p', 'r' => 'r', 's' => 's', 'ʃ' => 'S', 't' => 't', 'θ' => 'T', 'v' => 'v', 'w' => 'w', 'j' => 'y', 'z' => 'z', 'ʒ' => 'Z', 'ɜ' => '', ' ' => ' ', 'ˈ' => '' } text = ARGF.read substring = '' text.split("").each do |c| substring << c if substring.length == 2 if map.has_key? substring print map[ substring ] else front = substring[0] if map.has_key? front print map[ front ] end back = substring[1] if map.has_key? back print map[ back ] end end substring = '' end end 
Это потрясающе, хотя стоит отметить, что [[inpt PHON]] поддерживается только для голосов, которые были в OS X до 10.6. Это немного раздражает, так как их качество намного ниже, чем у современных голосов, и было бы неплохо иметь возможность передавать данные, например, в Fiona. Ну что ж! Benjamin Nolan 9 лет назад 3
Да, это не работает с новыми голосами. adib 8 лет назад 0
Я нашел этот список голосов до 10.6: http://alvinalexander.com/blog/post/mac-os-x/mac-os-x-text-speech-voices-speaking-using-applescript Не бесполезный Это Агнес, Кэти, Принцесса, Вики, Виктория, Брюс, Фред, Джуниор, Ральф. Я еще не проверил, какой из них на самом деле работает с IPA. tobych 7 лет назад 0
1
Woody

Попробуйте скобки / косые черты вокруг каждого слова, если оно не работает с фразой. Это не работает:

say "/hwæt we ˈɡɑːrˌdenɑ in ˈjæːɑrdɑɣum/" 

Но это похоже на:

say "/hwæt/ /we/ /ˈɡɑːrˌdenɑ/ /in/ /ˈjæːɑrdɑɣum/" 

Квадратные скобки работают также:

say "[huː] [ðɑ] [æðelɪŋɡɑs] [ˈelːen] [ˈfremːedon]" 

Удачи!

(Отредактировано, потому что я перечитал и увидел, что вы попробовали косые черты, окружающие всю фразу.)

Хм ... Я не уверен, что это на самом деле читается как IPA. Похоже, он пропускает все неанглийские символы, когда я запускаю эти команды. Если я произнесу «скажем -v Алекс» / hwæt / / we / / ˈɡɑːrˌdenɑ / / in / / ˈjæːɑrdɑɣum / "`, то будет написано: "Weh wiardena yeardaou">. <Хотя, спасибо за попытку. :) Benjamin Nolan 8 лет назад 1