Здравствуйте!
Не нашёл более подходящего раздела.
В свободное время от работы и мыслей о Dizzy я очень люблю поразмышлять на тему распознавания и синтеза речи, распознавания образов и вообще искусственном интеллекте. Здесь хочу поделиться своими мыслями и запросить некоторой помощи связанной напрямую с платформой ZX.
Сперва немного о задаче распознавания образов. Кто-то считает что эта задача уже неплохо решается нейронными сетями, но у меня несколько другой взгляд на эту тему.
Первое. Посмотрите что может наш мозг. Взгляд человека легко выхватывает множество подобных предметов на изображении. В том числе глядя на слово "молоко" быстро бросается в глаза как много букв "о" в этом слове. Объекты могут различаться размером, цветом или ориентацией в пространстве, но человек всё равно легко объединяет их в "подобные". Глядя например на зебру, мы не просто классифицируем объект как зебра, мы можем также сказать где у неё уши, глаза, рот и т.д. Видя незнакомый объект мы тем не менее можем описать его форму через знакомые примитивы. Глядя на кучу подобных объектов, например игрушечных машинок, мы тем не менее можем представить как выглядит модель целиком, хотя и ни один объект не видим разом со всех сторон. Фактически мы умеем "достраивать" трёхмерную модель по 2-хмерному изображению. В этой в связи было бы интересно каким-либо образом создать композицию на самом деле различных объектов сложенных в кучу тем не менее воспринимаемых разумом как одно и тоже. Всё что умеют нейронные сети это решать задачу "классификации" объектов и то без уверенности. Человек никогда не меряет свою уверенность в процентах, всё что он может сказать, это то что он уверен или всё ещё сомневается и это отнюдь не похоже на установленный предел "уверен если какой-то там синтетический математический параметр больше 90%".
Второе. Обучение. Человеку не нужно увидеть 100 изображений кабарги, в разных контекстах, чтобы научиться распознавать её. Достаточно одного чтобы уверенно распознавать взрослую особь и может быть ещё одного чтобы различать детёнышей. Где это в хвалёных нейронных сетях?
Третье. Здесь начинается конструктив. Если представить изображение в виде капелек воды, то всё что пытаются сделать современные нейронные сети, это фактически согнать всю воду в одну точку в зависимости от изображения, прогнав её через какой-то фильтр. В разные точки в зависимости от желаемой классификации, но в одну. А если одной точки не получилось (а не получается на самом деле на любом примере не из выборки на которой нейронная сеть обучалась), то решить что верна та точка на которой воды скопилось больше всего. Стоит ли удивляться быстрому росту числа ошибок при возрастании числа классов при таком подходе? Как мне кажется истина в том что у современных сетей просто перепутаны немного входы и выходы. Не изображение на входе, классификация на выходе и обучение (подбор фильтра) до распознавания, а шаблон на входе, изображение на выходе и подбор такого фильтра, чтобы капельки воды из шаблона легли на изображение при каждом распознавании. Не смогли подобрать фильтр? Значит шаблона на изображении не представлено. Получилось? Конфигурация фильтра и есть ответ на все вопросы об изображении. При таком подходе вы сможете сказать "где ухо?"
Теперь о задаче распознавания речи. Знаете чем звук похож на цвет? Тем что если с детства вы приучены называть и коралловый и перламутровый и цвет кожи поросёнка одним словом "розовый", то вы перестаёте их различать. Точно также при изучении языка эсперанто русский человек не может уловить разницы в звуках h и ĥ. А китайцу изучающему русский очень сложно уловить суть звука "р". На самом деле и звук и свет суть есть волна. Эта особенность восприятия через названия есть особенность восприятия волн человеческой психикой.
Весь воспринимаемый диапазон цветов человеческим глазом укладывается в одну "октаву", т.е. минимальная длина воспринимаемой световой волны нашим глазом примерно в два раза меньше максимальной длины волны. И на "световую октаву" в нашем глазу 3 рецептора, а цветов в радуге человек интуитивно называет 7. Точно также на звуковую октаву интуитивно человек назвал семь нот. А звуковых октав человек воспринимает до 10. И я подозреваю что точно также как со светом в мозге человека запрятано по три рецептора звуков на каждую октаву. Как каждый рецептор реагирует на какую-либо частоту и как это вызнать у меня нет ответа, но подозреваю копать нужно в сторону восприятия аккордов.
Теперь наконец к теме. Мне думается что задача распознавания голоса и его синтеза связаны не разрывно, нельзя решать одну задачу без другой. В современных вроде бы успешных решениях меня не устраивает примерно тоже что и в решениях для распознавания образов: сложность обучения, странная неточность в определении границ слов, отсутствие различения интонаций.
Так вот в этой теме я хотел спросить знающих людей как устроен музыкальный сопроцессор ZX? Какие вообще звуки он способен воспроизводить кроме тех что доступны через BASIC (помню в детстве воспроизводили несколько мелодий из папиного пособия по игре на баяне по нотам) и как на этих звуках удалось построить синтез голоса в таких играх как Robocop и даже какой-то части Dizzy? Я понимаю, что это и не синтез вовсе, а просто аппроксимация готового звукового сигнала средствами музыкального сопроцессора. Просто интересно, а можно ли например наиграть какие-то слова, чтобы они были узнаваемыми на фортепьяно или гитаре? И какие ноты в этом случае бы были у того же слова "Dizzy" или "Robocop". А если нельзя, то всё же задавшись целью какие музыкальные инструменты подошли бы для этой цели?