Поэтому, строго говоря, записанные диктором сообщения обычно разбиваются не на фонемы, а на составляющие более низкого уровня (дифоны, аллофоны и т. д.), а помимо сопоставления отдельно взятого фрагмента фонеме в библиотеку записывается информация о сопутствующих коартикуляционных и просодических эффектах. Разработчиков интересует не только вхождение звука в ту или иную фонему, но и его громкость, длительность и высота, из-за чего количество помещенных в библиотеку «кирпичиков» намного превышает количество фонем (их в любом языке не больше нескольких десятков, а вхождений в хорошей библиотеке может быть несколько тысяч). Иногда, чтобы упростить разбиение и не раздувать библиотеку, реализацию просодических эффектов возлагают на DSP, но синтезированная таким способом речь звучит ненатурально, тогда как хорошие системы синтеза речи говорят «почти как люди».
В ранних системах синтеза нужные сэмплы выбирались с помощью предварительно описанных правил, но уже в 70-х гг. прошлого века повсеместно стали применяться более эффективные методы, позволяющие быстро отыскать нужный фрагмент. Но просто сложить вместе найденные сэмплы — мало. На месте склейки будут слышны явные артефакты, «бульканье». Поэтому перед тем, как выдать слушателю результат, система синтеза сглаживает переходы между различными фрагментами.
Если все сделано правильно, на выходе мы услышим слегка монотонную, но вполне внятную и интонационно размеченную речь. К сожалению, полностью избавиться от эффектов склейки удается не всегда, а машинные интонации — хотя формально придраться вроде бы и не к чему — отличаются от человеческих (наверное, слишком уж они правильные). Делают ли системы синтеза ошибки? Конечно, особенно на незнакомых словах (см. табл. 1). Но у людей довольно гибкая система восприятия, и в большинстве случаев мы способны сразу же догадаться, какое слово машина прочитала неправильно, так что подобные ошибки нельзя считать критичными.
Сверхзадачей систем синтеза речи является, конечно, речь, не отличимая на слух от человеческой. Возможно ли это в рамках используемых сегодня моделей? Справедливости ради, признаем, что единого мнения на этот счет нет, к тому же с каждым годом появляется все больше сомнений, что эта задача имеет какое-то практическое значение. Потребители хотят знать, когда они говорят с компьютером, а когда — с человеком. И легкий «нечеловеческий» акцент как безошибочный маркер их, по большому счету, вполне устраивает.
— Тихо — сказал Форд. — Послушай, это может быть важно.
— Ва… важно?
— Это вогонский капитан делает объявление с корабельного узла.
— Ты хочешь сказать, что так вогоны разговаривают?
— Слушай же!
— Но я не понимаю по-вогонски!
— Тебе и не надо. Просто засунь рыбку в ухо.
Ничего не слышу?
Он скажет: «До свидания!»
А слышится: «До здания!»
Он спросит: «Где галоши?»
А слышно: «Это лошадь?»
Казалось бы, если мы можем научить компьютер говорить, то с распознаванием речи никаких трудностей возникнуть не должно. В конце концов, все, что нам нужно, — произвести операции по синтезу речи в обратном порядке. Записать человеческую речь, автоматически разобрать ее на «кирпичики», свериться с базой сэмплов, подставить нужные фонемы, а потом собрать из фонем слова, расставив знаки препинания на основе анализа просодических эффектов. Делов-то.
Как бы не так! То есть в теории-то все верно, а вот на практике…
Когда дело доходит до обратного преобразования, выясняется, что человеческая речь — понятие, в общем-то, весьма растяжимое и наш мозг, оказывается, постоянно выполняет сложнейшую работу по распознаванию образов. Разработчикам систем распознавания речи пришлось столкнуться с тем, что люди в массе своей говорят неразборчиво, очень неразборчиво и не всегда в приемлемых шумовых условиях. Кроме того:
Язык (а разговорный язык — тем более) не является застывшим образованием. В большинстве языков имеется несколько диалектов, и даже в рамках одного диалекта существует несколько равноправных вариантов произношения одного и того же слова.
У каждого из нас есть свои речевые особенности, которые могут затруднить распознавание речи (отсюда, кстати, следует вывод, что не все системы распознавания речи одинаково полезны — конкретно для вас, например, больше может подойти система А, использующая языковую модель A’, а вашему соседу будет проще работать с системой Б, использующей языковую модель Б’).
В естественной речи, ммм, содержатся, эээ, звуки-паразиты, которые, как бы, совершенно, так сказать, необязательно, эээ, распознавать, но хорошо бы отфильтровывать. И чем раньше они будут отброшены — тем лучше.