PDA

Просмотр полной версии : Как на ZX делали синтез голоса? (размышления об ИИ)



unDEFER
28.03.2021, 08:44
Здравствуйте!
Не нашёл более подходящего раздела.
В свободное время от работы и мыслей о Dizzy я очень люблю поразмышлять на тему распознавания и синтеза речи, распознавания образов и вообще искусственном интеллекте. Здесь хочу поделиться своими мыслями и запросить некоторой помощи связанной напрямую с платформой ZX.

Сперва немного о задаче распознавания образов. Кто-то считает что эта задача уже неплохо решается нейронными сетями, но у меня несколько другой взгляд на эту тему.
Первое. Посмотрите что может наш мозг. Взгляд человека легко выхватывает множество подобных предметов на изображении. В том числе глядя на слово "молоко" быстро бросается в глаза как много букв "о" в этом слове. Объекты могут различаться размером, цветом или ориентацией в пространстве, но человек всё равно легко объединяет их в "подобные". Глядя например на зебру, мы не просто классифицируем объект как зебра, мы можем также сказать где у неё уши, глаза, рот и т.д. Видя незнакомый объект мы тем не менее можем описать его форму через знакомые примитивы. Глядя на кучу подобных объектов, например игрушечных машинок, мы тем не менее можем представить как выглядит модель целиком, хотя и ни один объект не видим разом со всех сторон. Фактически мы умеем "достраивать" трёхмерную модель по 2-хмерному изображению. В этой в связи было бы интересно каким-либо образом создать композицию на самом деле различных объектов сложенных в кучу тем не менее воспринимаемых разумом как одно и тоже. Всё что умеют нейронные сети это решать задачу "классификации" объектов и то без уверенности. Человек никогда не меряет свою уверенность в процентах, всё что он может сказать, это то что он уверен или всё ещё сомневается и это отнюдь не похоже на установленный предел "уверен если какой-то там синтетический математический параметр больше 90%".
Второе. Обучение. Человеку не нужно увидеть 100 изображений кабарги, в разных контекстах, чтобы научиться распознавать её. Достаточно одного чтобы уверенно распознавать взрослую особь и может быть ещё одного чтобы различать детёнышей. Где это в хвалёных нейронных сетях?
Третье. Здесь начинается конструктив. Если представить изображение в виде капелек воды, то всё что пытаются сделать современные нейронные сети, это фактически согнать всю воду в одну точку в зависимости от изображения, прогнав её через какой-то фильтр. В разные точки в зависимости от желаемой классификации, но в одну. А если одной точки не получилось (а не получается на самом деле на любом примере не из выборки на которой нейронная сеть обучалась), то решить что верна та точка на которой воды скопилось больше всего. Стоит ли удивляться быстрому росту числа ошибок при возрастании числа классов при таком подходе? Как мне кажется истина в том что у современных сетей просто перепутаны немного входы и выходы. Не изображение на входе, классификация на выходе и обучение (подбор фильтра) до распознавания, а шаблон на входе, изображение на выходе и подбор такого фильтра, чтобы капельки воды из шаблона легли на изображение при каждом распознавании. Не смогли подобрать фильтр? Значит шаблона на изображении не представлено. Получилось? Конфигурация фильтра и есть ответ на все вопросы об изображении. При таком подходе вы сможете сказать "где ухо?"

Теперь о задаче распознавания речи. Знаете чем звук похож на цвет? Тем что если с детства вы приучены называть и коралловый и перламутровый и цвет кожи поросёнка одним словом "розовый", то вы перестаёте их различать. Точно также при изучении языка эсперанто русский человек не может уловить разницы в звуках h и ĥ. А китайцу изучающему русский очень сложно уловить суть звука "р". На самом деле и звук и свет суть есть волна. Эта особенность восприятия через названия есть особенность восприятия волн человеческой психикой.
Весь воспринимаемый диапазон цветов человеческим глазом укладывается в одну "октаву", т.е. минимальная длина воспринимаемой световой волны нашим глазом примерно в два раза меньше максимальной длины волны. И на "световую октаву" в нашем глазу 3 рецептора, а цветов в радуге человек интуитивно называет 7. Точно также на звуковую октаву интуитивно человек назвал семь нот. А звуковых октав человек воспринимает до 10. И я подозреваю что точно также как со светом в мозге человека запрятано по три рецептора звуков на каждую октаву. Как каждый рецептор реагирует на какую-либо частоту и как это вызнать у меня нет ответа, но подозреваю копать нужно в сторону восприятия аккордов.

Теперь наконец к теме. Мне думается что задача распознавания голоса и его синтеза связаны не разрывно, нельзя решать одну задачу без другой. В современных вроде бы успешных решениях меня не устраивает примерно тоже что и в решениях для распознавания образов: сложность обучения, странная неточность в определении границ слов, отсутствие различения интонаций.

Так вот в этой теме я хотел спросить знающих людей как устроен музыкальный сопроцессор ZX? Какие вообще звуки он способен воспроизводить кроме тех что доступны через BASIC (помню в детстве воспроизводили несколько мелодий из папиного пособия по игре на баяне по нотам) и как на этих звуках удалось построить синтез голоса в таких играх как Robocop и даже какой-то части Dizzy? Я понимаю, что это и не синтез вовсе, а просто аппроксимация готового звукового сигнала средствами музыкального сопроцессора. Просто интересно, а можно ли например наиграть какие-то слова, чтобы они были узнаваемыми на фортепьяно или гитаре? И какие ноты в этом случае бы были у того же слова "Dizzy" или "Robocop". А если нельзя, то всё же задавшись целью какие музыкальные инструменты подошли бы для этой цели?

goodboy
28.03.2021, 10:11
как на этих звуках удалось построить синтез голоса в таких играх как Robocop и даже какой-то части Dizzy?
тупо играется семпл.
с более хорошим качеством 4бита - (RoboCop/SWIV) c AtariST,
в DIZZY3 вообще однобитный с с64

unDEFER
28.03.2021, 11:29
Ну в смысле сэмпл? Что это означает в данном контексте?
В моём PC-шном понимании сэмпл - это один отчёт. Число от -32768 до 32767 если звук просэмплирован с разрешением 16 бит.
Знаю, что кажется в трэковой музыке есть понятие сэмпла просто как какого-то произвольного звука.
Был опыт когда я по спектру в музыкальном языке программирования Chuck составлял звук хохота из отдельных частотных составляющих.
А как в ZX задаются эти сэмплы я не знаю. Вроде там до трёх каналов сопроцессор может воспроизводить одновременно. А что именно может быть воспроизведено в одном канале, какой там набор звуков, я не знаю.
Можете пояснить своими словами, пожалуйста, или дать ссылку где почитать?

goodboy
28.03.2021, 11:57
Вроде там до трёх каналов сопроцессор может воспроизводить одновременно. А что именно может быть воспроизведено в одном канале, какой там набор звуков, я не знаю.
там не звуки, а громкость.
принцип работы АЦП / ЦАП известен ?

unDEFER
28.03.2021, 12:11
Да, известен. Я правильно понимаю что понятие сэмпла как такового и не изменилось вовсе?
Вы указали 4 бита и даже 1 бит. Это же значение от -8 до 7 или вообще +/-1.
Даже не верится что при таком разрешении вообще возможно воспроизвести что-то вменяемое.
А какова частота дискретизации в таком случае?
Т.е. все эти каналы/ноты это лишь программная надстройка, а музыкальный сопроцессор ничего про это и не знает вовсе?

goodboy
28.03.2021, 12:19
Даже не верится что при таком разрешении вообще возможно воспроизвести что-то вменяемое.
https://archive.org/download/World_of_Spectrum_June_2017_Mirror/World%20of%20Spectrum%20June%202017%20Mirror.zip/World%20of%20Spectrum%20June%202017%20Mirror/sinclair/games/g/Gunhed(Crash).tap.zip
вот пример однобитного вывода на бипер (слушайте после выбора StartMission в меню)

Black Cat / Era CG
28.03.2021, 18:37
В Dizzy вроде эта фраза на бипере проигрывается, а не на AY, емнип.

goodboy
28.03.2021, 21:10
В Dizzy вроде эта фраза на бипере проигрывается, а не на AY, емнип.
в какой именно ?

Black Cat / Era CG
28.03.2021, 21:28
в какой именно ?Во 2.

Raydac
28.03.2021, 21:57
Так вот в этой теме я хотел спросить знающих людей как устроен музыкальный сопроцессор ZX? Какие вообще звуки он способен воспроизводить кроме тех что доступны через BASIC (помню в детстве воспроизводили несколько мелодий из папиного пособия по игре на баяне по нотам) и как на этих звуках удалось построить синтез голоса в таких играх как Robocop и даже какой-то части Dizzy?
вот например синтез речи на AY 8910

https://youtu.be/NIcBaSIdSA4

DragonsLord
28.03.2021, 22:09
Во 2 Диззике он говорит "эгей, зис Ковид" :biggrin:

bolini
29.03.2021, 12:35
Просто интересно, а можно ли например наиграть какие-то слова, чтобы они были узнаваемыми на фортепьяно или гитаре?

Самый близкий по тембру и интонации инструмент к голосу человека - скрипка. Вот в этой петросянской передаче как раз то, о чем вы говорите - человек в звуке слышит знакомые образы (точнее фразы), и сопоставляет их со "своими шаблонами". Иностранец, или ребенок, например бы, не понял.
https://youtu.be/8pXDwizBAW0

AL
13.12.2021, 10:27
unDEFER,
можно ли например наиграть какие-то слова
— вообще говоря нет — по следующим соображениям: одну и ту же фразу можно проговорить, а можно пропеть (причём на разные мотивы), в первом случае текст воспроизводится как бы на одной ноте, во втором у каждого слога свой тон. И хотя в китайском языке вроде как есть различие значения звуков по высоте, в целом музыкальное восприятие и речевое — разные явления. Случаи же, когда на том или ином инструменте удаётся наиграть подобие каких-то слов скорее всего основаны на сходстве ритмики и тембра, но не на тональности

Dexus
13.12.2021, 10:47
Ни синтеза ни распознавания на спектруме не было и нет (если не считать эзотерические специальные устройства для этого) Есть воспроизведение сэмплов. Есть типа "говорилки" которая не синтезирует, а тупо склеивает сэмплы фонем. Сэмплы 1-битные. Теоретически качество биперных сэмплов можно улучшить если предварительно обрабатывать сигнал, закладывая сглаживание движения диффузора. Самое качественное что слышал из сэмплированного 1битного голоса на спектруме было в Robin of the wood и Nodes (собственно их одна контора делала. Odin).

reddie
13.12.2021, 14:23
К собственно синтезу все это никакого отношения не имеет. Просто играются оцифровки. О чем сразу было сказано гудбоем во втором сообщении.

zebest
13.12.2021, 18:44
если не считать эзотерические специальные устройства для этого
Это про Currah uSpeech ? Довольно круто видимо было для тех лет. В эмуле можно оценить качество.

Black Cat / Era CG
13.12.2021, 18:45
Так там тоже просто сэмплы.

ALKO
13.12.2021, 18:56
Просто интересно, а можно ли например наиграть какие-то слова, чтобы они были узнаваемыми на фортепьяно или гитаре

В какой-то демосценке в гритсах меандром пердели звуки отдалённо напоминающие речь.
Но чаще всего юзают ЦАП, конечно же. Странно что под AY говорилок нет толком, есть лишь воспроизведение цельных слов.
А вот под бипер есть SpeakEasy, Fongen, и подобное им, где в памяти хранятся отрывки букв (фонемы). Правда на выходе получается сатанячий войс. Ну, ничё не поделать.

Алсо, себе на пня похожую говорилку качнул по приколу. Там уже 8 бит, и относительно вразумительная речь, хоть и придурошно звучит. Можно даже помимо тембра задавать и ударения на слог.
Вроде оно.
http://old-dos.ru/files/file_451.html

reddie
13.12.2021, 20:30
Про "наиграть слова, чтобы были узнаваемыми на фортепиано" не понял, ну ладно.
Речь была в древней демке 90-х Condommed, уж не помню, вроде на бипер шла, т.к. параллельно игрался AY-музон.
Это во время эффекта с прыгающим вращающимся бубликом или типа того. Проговаривалось "окей-окей". Сэмпл, ясно дело.

^m00h^
13.12.2021, 20:41
Это демо Trashe.