Форум программистов, компьютерный форум CyberForum.ru

Звук, генерация, голос - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
24.08.2010, 17:51     Звук, генерация, голос #1
ищу способ как можно:
1) генерировать звук
1.1) генерировать звук конкретной частоты и громкости (через колонки), безшовный(чтобы не возникало шипения при переходе между частотами)
1.2) генерировать сложный звук состоящий из нескольких частот

2) считывать звук (в реалтайме, с микрофона)
2.1) основная частота
2.2) много частот

теоретический вопрос: если упростить голос человека до одной главной частоты, он будет остаться голосом, т.е. можно ли будет его понять?

(под одной частотой я понимаю когда частота звука меняется не чаще, чем один раз за амплитуду текущей частоты)

я понимаю, что скорее всего стандартные средства не могут так точно управлять звуком, поэтому подойдут любые сторонние библиотеки, которые смогут это сделать (кто чем пользовался?)

естественно, желательно чтобы все это происходило через потоки или другим способом, но не через файлы.


Буду благодарен за любую помощь. сейчас оплезнее всего была бы ссылка на библиотеку и немного помощи о том, как её юзать.

Возможно уже есть подобный проект.

Конечная цель - скормить эти данные нейронной сети, и посмотреть, что получиться, и какие ресурсы нужны, чтобы сеть смогла издавать хотя бы какие-то осмысленные звуки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 17:51     Звук, генерация, голос
Посмотрите здесь:

генерация чисел C++
C++ Генерация массива
Генерация программы C++
C++ генерация чисел
C++ Генерация комбинаций из n по m
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
24.08.2010, 21:52     Звук, генерация, голос #2
Цитата Сообщение от mimoletom Посмотреть сообщение

2) считывать звук (в реалтайме, с микрофона)
2.1) основная частота
2.2) много частот
посмотри DirectShow там вродь есть возможность работы со звуком, по ходу и первый пункт может прояснится
теоретический вопрос: если упростить голос человека до одной главной частоты, он будет остаться голосом, т.е. можно ли будет его понять?
если обрать остаточные частоты останется лишь амплитуда, а по ней сомневаюсь что можно распознать букву, да и буквы состоят из нескольких звуков ...
думаю можно брать несколько основных частот и по их соотношениям (мб продолжительности) находить букву
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
25.08.2010, 11:58  [ТС]     Звук, генерация, голос #3
"думаю можно брать несколько основных частот и по их соотношениям (мб продолжительности) находить букву "
Если имеется ввиду, что звуки последовательны, то хорошо

я имел ввид обязательно ли для того, чтобы определить букву слышать несколько звуков одновременно
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
25.08.2010, 12:08     Звук, генерация, голос #4
ну человеку вообще сложновато произносить несколько звуков одновременно(не частот)
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
25.08.2010, 12:43  [ТС]     Звук, генерация, голос #5
тогда поставим вопрос по-другому, можно ли каждый звук изобразить в виде нескольких последовательных частот, но не нескольких одновременно?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
25.08.2010, 13:10     Звук, генерация, голос #6
нет, представьте что два разных человека будут тянуть букву З.Высота голоса(это основная частота) у каждого человека своя и на протяжение звучания эта частота не меняется.Но мы же как то узнаем что это именно буква З даже у разных людей(значит это не одна частота), вот это звучание дают несколько основных частот.
Вы когда-нибудь слышали одновременно только одну частоту ? звучит это преотвратительно ... к примеру это звук из динамика вышего компьютер - похоже или это на какой то звук ?
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
25.08.2010, 13:23  [ТС]     Звук, генерация, голос #7
ради проверки писал прогу, которая заставляет динамик выдавать опр. частоту, действительно не приятно. думал это из-за неправильно подобранных частот или ещё чего-то.
ладно, пример хороший, спасибо )
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
25.08.2010, 13:28     Звук, генерация, голос #8
да пожалуйста
посмотрите DirectShow там кажется имеется возможность смотреть какие частоты в данный момент

Не по теме:


если не секрет, что вы от нейронной сети хотите получить ?)

Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
25.08.2010, 14:39     Звук, генерация, голос #9
когда-то давным давно возникла потребность обрабатывать входящий звук "на лету", юзали irrKlang, весьма мощная библиотека, бонусом является наличие хорошой документации (правда на буржуйском).

всё что ниже, отголоски учебных курсов в памяти, и информацию желательно проверять:
теоретический вопрос: если упростить голос человека до одной главной частоты, он будет остаться голосом, т.е. можно ли будет его понять?
Нет. Буквы бывают гласные и согласные, согласные бывают звонкие и глухие.
Когда мы говорим, происходит изменение интенсивности звука и спектрального разложения во времени. Если рассматривать только гласные, то можно говорить, что в некоторый период времени (пока длится звучание) интенсивность не изменяеться (это конечно весьма условно, но предположим), тогда различие между, например, "а" и "ы" будет только в частотном спектре. Собственно первые два максимума спектрального разложения и являются определяющими для гласных звуков. Помимо гласных, существуют вокализированые(?) согласные ( например, "р","з"), в принципе для них должно быть верно всё вышесказаное. (Кстати, спектральный максимум и некоторая частотная полоса +-delta_Freq называется фронтантой). Так вот, где-то читал, что первые пять фронтант однозначно определяют звучание. Очевидно, что звуки определяются не только спектром по частотам, но и интенсивностью во времени (например, "б", "п" и т.д.), что тоже нужно учитывать.


П.С.
в целом не очень понятно, что именно вы хотите получить. Собственно, что должно в итоге происходить?
П.П.С. Напоминает весьма неплохую курсовую работу в перспективе на дипломную.
П.П.П.С. Вы уверены в том, что задача должна решаться с помощью плюсов? Возможно имеет смысл обратить внимание на МатЛаб, например?


И вот это не понятно:
желательно чтобы все это происходило через потоки или другим способом, но не через файлы
дополнение:
уважаемые, неприятность звука из динамика связана скорее не с тем, что используется одна частота, а с формой сигнала во времени (которая близка к прямоугольной)
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
25.08.2010, 20:58  [ТС]     Звук, генерация, голос #10
KuKu
для начала реакцию "нет шума, не издаем звуки. есть шум - издаем звуки",это должно работать из-за самого строения этой сети )

потом изучить то, как сеть "запоминает". например ритмичными или периодическими звуками. (например если звук был ритмичным, сеть привыкла, и продолжает их издавать, но внешний звук прекратился)

если это получится, то "удивление" (что будет делать сеть дальше, после обучения в отсутствии внешнего сигнала), как долго сохраняется эта память, каким именно образом сеть запомнила это(посмотреть строение? основные пути), возможно ли переобучение для другого ритма\тональности, сохранится ли первый опыт после переобучения.

даже если получиться осуществить только первые 2 пункта уже хорошо =)

четвертый пункт в теории: создание обширной обратной связи (две трети?), нахождение золотой середины между отрицательной и положительной обратной связью(чтобы часть нейронов была возбуждена, а часть нет, и их количество сохранялось в равновесии, даже без входящего сигнала, за счет обратной связи)


Vladimir.
"всё что ниже, отголоски учебных курсов в памяти"
т.е. звук можно идентифицировать зная его 5 основных фронтант + интенсивность в каждый промежуток времени для каждой фронтанты

Сколько "слепков" звука в секунду нужно, чтобы идентифицировать звук?
(например. я говорю со скоростью приблизительно 20 букв\секунду, на 1 звук уходит около 0.05 сек.
сколько раз за 0.05 сек нужно снять информацию о текущей частоте и интенсивности звука, чтобы его достаточно точно определить?)

"Возможно имеет смысл обратить внимание на МатЛаб, например?"
К сожалению в дальнейшем производительность будет иметь первостепенный приоритет. А насколько мне известно плюсы обладают лучшей производительностью..
Ну разве что после ассамблера, но я не такой маньяк =)

"желательно чтобы все это происходило через потоки или другим способом, но не через файлы"
просто на других форумах максимум, что мне советовали - сделать файл и проиграть его командой PlaySound();
что на мой взгляд совсем не то, что мне нужно, так как это отняло бы слишком много времени
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
25.08.2010, 23:29     Звук, генерация, голос #11
"всё что ниже, отголоски учебных курсов в памяти"
т.е. звук можно идентифицировать зная его 5 основных фронтант + интенсивность в каждый промежуток времени для каждой фронтанты
выходит что так. Возможно, есть какие нибудь тонкости, возможно такая информация будет избыточной. Думаю имеет смысл погуглить "речевые анализаторы" или что-нибудь в этом роде.

Сколько "слепков" звука в секунду нужно, чтобы идентифицировать звук?
(например. я говорю со скоростью приблизительно 20 букв\секунду, на 1 звук уходит около 0.05 сек.
сколько раз за 0.05 сек нужно снять информацию о текущей частоте и интенсивности звука, чтобы его достаточно точно определить?)
Даже как-то потерялся... Думаю имеет смысл создать представление о рядах Фурье и дискретном преобразовании Фурье (ДПФ). Многие вопросы отпадут сами собой.
"Возможно имеет смысл обратить внимание на МатЛаб, например?"
К сожалению в дальнейшем производительность будет иметь первостепенный приоритет. А насколько мне известно плюсы обладают лучшей производительностью..
Ну разве что после ассамблера, но я не такой маньяк =)
Дело в том, что при создании/обучении/упрощении НС могут возникнуть разные сложности, которые проще решить на "высоком" уровне. А уже имея четкую работающую модель, её можно быстро закодить на сях. Не оптимизируйте несуществующее решение.

"желательно чтобы все это происходило через потоки или другим способом, но не через файлы"
просто на других форумах максимум, что мне советовали - сделать файл и проиграть его командой PlaySound();
что на мой взгляд совсем не то, что мне нужно, так как это отняло бы слишком много времени
Обучать сеть будет гораздо проще "скармливая" ей готовые входные данные, а не надиктовывая их в микрофон. В общем случае, любое устройство это фаил, а когда вы открываете фаил, вы создаёте поток. Не создавайте себе лишних сложностей.

И всё же Вы не ответили на основной вопрос: Как должен вести себя готовый экзешник, что он должен делать. Для чего всё это нужно? (курсовая, для себя, изучаем НС, изучаем работу со звуком, хочу себе электронного секретаря и т.п.)

Добавлено через 14 минут
порылся в инетах, просмотрите это небольшое адекватное ревью для общего представления
mimoletom
0 / 0 / 0
Регистрация: 24.08.2010
Сообщений: 6
25.08.2010, 23:57  [ТС]     Звук, генерация, голос #12
"для себя, изучаем НС, изучаем работу со звуком",
это не курсовая (она будет намного позже, но возможно смогу использовать и для курсовой),
и не секретарь ( вряд ли НС сможет выдавать осознанный текст, на мой взгляд это слишком сложная задача, для которой необходимо намного большее, чем просто звуковое звучание слов. )

спасибо, буду изучать. ряды фурье как раз проходили недавно =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2011, 23:57     Звук, генерация, голос
Еще ссылки по теме:

Снимать звук с микрофона и воспроизводить звук из консоли C++
C++ Генерация массива
Генерация C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rotnii
3 / 3 / 1
Регистрация: 27.02.2010
Сообщений: 17
20.02.2011, 23:57     Звук, генерация, голос #13
Интересная тема меня тоже интересует. Подскажите как написать программу для генерации звука на колонки?

Добавлено через 4 минуты
Да может поможет для анализа звуков необходимо анализировать спектр входного сигнала по частоте, каждый звук имеет свою структкру и вообщем в усредненном значении у всех людей одинаков.

Добавлено через 15 секунд
Да может поможет для анализа звуков необходимо анализировать спектр входного сигнала по частоте, каждый звук имеет свою структкру и вообщем в усредненном значении у всех людей одинаков.
Yandex
Объявления
20.02.2011, 23:57     Звук, генерация, голос
Ответ Создать тему
Опции темы

Текущее время: 00:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru