Как вы можете заставить OS X сказать, что команда говорит символы IPA?
У меня есть около 200 строк Беовульфа, которые мы с несколькими друзьями перевели в Международный фонетический алфавит около полутора лет назад. В то время одним из инструментов, который мы использовали для проверки произношения, была OS X say
команда.
Вот первые шесть строк в соответствии с редакцией стихотворения Клебера, преобразованной в МФА, которую я точно знаю 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.
3 ответа
Вот скрипт Ruby, который берет строку текста IPA Unicode и преобразует ее в OS X say
фонетический синтаксис команды.
Поместите этот код Ruby в файл - давайте назовем его ipa2say.rb
, Сделайте файл исполняемым (т.е. chmod u+x ipa2say.rb
). Выполните исполняемый файл, передав ему текст IPA. Выйдет какой-нибудь фонетический текст ASCII.
Тогда беги say
с [[inpt PHON]]
директивы.
Итак, пример. Допустим, вы хотите say
текст МПА "əntərˈnæʃənəl fəˈnɛtɪk ˈælfəˌbɛt fəˈrɛvər". Из командной строки:
echo "ˌɪntərˈnæʃənəl fəˈnɛtɪk ˈælfəˌbɛt fəˈrɛvər" | ./ipa2say.rb
Будет выплевывать
IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr
Затем вы запускаете: say "[[inpt PHON]]IXntrnAESnl fAXnEHtIXk AElfbEHt frEHvr"
Вот сценарий.
#!/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
Просто хотел добавить, что произношение IPA, похоже, было перенесено в VoiceOver, который теперь, я думаю, представляет собой совершенно другой движок TTS. Перейдя к утилите VoiceOver, выберите «Речь», затем «Произношение», вы сможете настроить IPA. Это абсолютно не влияет на команду «Сказать» и команду «Редактировать, Речь, Начать говорить», хотя — тьфу!
Попробуйте скобки / косые черты вокруг каждого слова, если оно не работает с фразой. Это не работает:
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]"
Удачи!
(Отредактировано, потому что я перечитал и увидел, что вы попробовали косые черты, окружающие всю фразу.)