Управляем звуком в Windows. Управление звуком

Для создания звуковых эффектов используются процедуры модуля CRT:

Sound(X)- звуковой сигнал частотой X герц;

Delay (N)- задержка на N миллисекунд;

NoSound- отменить звук.

Любой звуковой эффект используется конструкцию аналогичную следующей:

Sound(500); Delay(2000); NoSound; В данном примере звуковой сигнал частотой 500 Гц будет звучать в течение 2 с (2000 мс). Для генерации мелодий этого используется набор частот или элементы массива, соответствующие нотам различных октав:

PROGRAM Demo_Sound ;{ заголовок программы}

USES CRT ;{ подключение модуля Crt}

CONST M: ARRAY OF INTEGER= {M-массив частот нот}

(262,294,330,349,392,440,494,523);{значение частот}

VAR I: INTEGER; ChCHAR;{объявление служебных переменных}

BEGIN {начало раздела операторов}

WHILE True DO BEGIN {организация цикла WHILE}

Ch: =READKEY; {ожидание нажатия клавиши}

CASE Ch OF {анализ результата нажатия клавиши}

#49:I: =1 ;{ действие, если нажата клавиша 1}

#50:I: =2 ;{ действие, если нажата клавиша 2}…

#55:I: =7; {действие, если нажата клавиша 7}

#48:HALT ;{ выход при нажатии клавиши 0}

END ;{ завершение оператора CASE}

SOUND (M [I]) ;{ звучание с частотой M [I]}

DELAY (100) ;{ установка длительности звучания}

NOSOUND ;{ отмена звучания}

END ;{ конец оператора WHILE}

END. {конец программы}

Конец работы -

Эта тема принадлежит разделу:

Двоичное кодирование информации. Физические, математические и информационные модели

Контрольные вопросы Дайте определение логики Какие высказывания называются ложными а какие истинными Какие логические связки.. Лекция Постановка цели.. Контрольные вопросы..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Лекция 1.
Тема: «Введение». 1. Информационная картина мира. Мы живем в мире, который существует в III основных формах: вещество, энергия, информация. Почему именно так, да

Лекция 2.
Тема: «Алгебра логики». Логика (от греческого слова «logos» - слово, мысль, речь, разум) – совокупность наук о законах и формах мышления, о наиболее общих

Лекция 3.
Тема: «Преобразование формул алгебры логики». Постановка цели. 2) Устная работа. Какие из следующих предложений не являются объектами алг

Лекция 4.
Тема: «Система счисления». I. Система счисления – это совокупность приемов и правил для записи чисел цифровыми знаками. Существуют непозиционные и позиционные сис

Лекция 5.
Тема: «Перевод чисел из одной системы счисления в другую». 1) Перевод целых чисел. Чтобы перевести целое десятичное число, в двоичную (8-ю, 16-ю) систему с

Операция над двоичным числами
1. Сложение. При выполнении операции «+» можно пользоваться таблицей «+» двоичных цифр. Двоичное число 10 показывает, что при сложении в каком-нибудь разряде двух двоичных

Двоичная система счисления
Двоичная система используется в ЭВМ всех размеров, т.к. именно в двоичной форме внутри машины запоминается, перемещается из одного устройства в другое и перерабатывается вся информация. Обусловлено

Моделирование как метод познания
В своей деятельности – научной, практической, художественной – человек очень часто использует модели, т.е. создает образ того объекта (процесса или явления), с которым ему приходится иметь дело. К

Один и тот же объект может иметь множество моделей, а разные объекты могут описываться одной моделью
Все модели можно разбить на II больших класса: - модели предметные (материальные); - модели знаковые (информационные). Предметные модели воспроизводят геометрические, физ

Формы представления информационных моделей
1) Язык как средство информационного моделирования. Язык является знаковой системой, которая позволяет создавать информационные модели. Естественные языки используются

Лекция 8.
Тема: «Этапы решения задач с помощью ЭВМ». Подготовка любой задачи к решению на ЭВМ состоит из нескольких этапов. Все этапы взаимосвязаны. I этап – четкая формули

Лекция 9.
Тема: «Алгоритм и его свойства. Способы записи алгоритмов». I. Алгоритм и его свойства. Алгоритмом называется определенная, формальная, общеп

Лекция 10.
Тема: «Линейный алгоритм. Составление линейных алгоритмов» Если команды алгоритма выполняются последовательно, одна за другой, то такой алгоритм называется лине

Лекция 11.
Тема: «Разветвляющийся алгоритм». В отличие от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в разветвляющиеся алгорит

Составление алгоритмов циклической и сложной структуры
1). Составить программу вычисления значения функции: а=1, b=2,2

Представление информации в компьютере
Компьютер может обрабатывать данные, которые представлены в специальном виде – только с помощью нулей и единиц. Каждый 0 или 1 называют битом. Один бит – это минимальная е

Внешняя память
В отличие от основной памяти внешняя память предназначена для долговременного хранения, и только хранения информации. Способность этой памяти хранить информацию не зависит от наличи

Краткая характеристика языка Паскаль
Язык программирования Паскаль разработан швейцарским профессором Высшей федеральной технической школы в Цюрихе, Н.Виртом в 1970 году. Затем в него были внесены несколько изменений и в 1979 году язы

Интегрированная среда программирования Turbo Pascal
Интегрированная среда программирования - IDE (Integrated Development Environment) включает в себя совокупность программ: экранный редактор, компилятор, компоновщик, отладчик, систему контекстной по

Клавиши оперативного вмешательства
Они представляют собой клавиши, которые устанавливаются для выполнения определенной функции, причем, находясь в любой точке среды Паскаль, нажатие клавиши Alt вместе с первой буквой любой команды и

File Edit Search Run Compile Debug Tools Options Window Help
File - работа с файлами; Debug - отладка; Edit - редактирование; Tools

Экранный редактор
Встроенный экранный редактор ТР предназначен для создания исходных текстов программ и их коррекции. В ТР 6.0 и 7.0 максимальный размер создаваемого файла – 1 Мбайт. Практически не ограничен размер

Основные команды перемещения
Команды управления перемещением курсора Ctrl-S, Ctrl-D, Ctrl-У и Ctrl-X позволяют свободно перемещаться по экрану без перехода на первый столбец в пустых стоках. Этот способ перемещения курсора осо

Символы языка
Паскаль использует следующие символы: 1. Буквы: 26 прописных латинских букв. 2. Цифры: 0,1,2,3,4,5,6,7,8,9. 3. Специальные символы: = + - * / <> () {} . , ; :

Лекция 16.
Тема: «Типы данных в языке программирования Turbo Pascal. Структура программы Turbo Pascal.» Типы данных в Паскале можно разделить на скалярны

Структура программы на языке Турбо Паскаль
Программа, написанная на языке Турбо Паскаль, имеет следующую структуру: · заголовок программы; · раздел описаний; · тело программы. Заголовок программы с

Лекция 17.
Тема: «Линейные программы» Строки программы, выполняемые одна за другой, называются линейными. Операторы языка. Операторы програм

Цикл FOR
Цикл FOR используется в трех случаях, когда число повторений может быть заранее известно. Существует две формы цикла: FOR i: =A TO B DO<тело цикла>

Понятие подпрограммы
Подпрограмма – это повторяющая группа операторов, оформленная в виде самостоятельной программой единицы. Она записывается однократно, а в соответствующих местах программы обеспечивается лишь обраще

Процедуры и функции
Цикл – это повторение группы операторов на данном этапе обработки информации. Если же какую-то группу одних и тех же команд требуется посторенние в разных местах программы, меняя лишь параметры, то

Операция над массивами
Инициализация. Инициализация-это присваивание компонентам массива начальных значений. Выполняется в цикле: FOR I: =1 TO 10 DO MASI [I]:=0 ;{ все элементы массива MASI равны 0}

Способы объявления двумерного массива
Способ 1. Если в программе используется один массива в разделе описания переменных: Var a: Array Of<тип элементов>; Спос

Сортировка массива
Сортировка – один из наиболее распространенных процессов современной обработки данных. Сортировкой называется распределение элементов множества по группам в соответствии с о

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

Сортировка методом пузырька
Один из самых популярных методов сортировки – ″пузырьковый″ метод основан на том, что в процессе исполнения алгоритма более ″легкие″ элементы массива

Бинарный поиск в упорядоченных массивах
Едва ли не самой внушительной демонстрацией эффективности применения компьютеров являются задачи, в которых осуществляется поиск информации в некотором списке. Ранее мы использовали метод линейного

Графический экран
Отличие графического экрана от текстового: единица управления в графическом режиме - точка (пиксел), в текстовом – символ. Прежде чем работать с графическими командами, надо запустить графическую с

Текстовый экран
Текстовый экран позволяет разместить 25х80 символов. Минимальная единица управления - символ. Для управления цветом и фоном используются процедуры, находящиеся в модуле CRT: Cl

Лекция 24.
Тема: «Операционные системы семейства Microsoft Windows». Windows- это название семейства операционных систем для IBM -совместимых персон

Основы взаимодействия пользователя с системой
После запуска системы Windows экран монитора приобретает специфическое оформление, называемое термином Рабочий стол.На нем размещаются значки-пиктограммыосновных п

Управление окнами
В основе системы Windowsтак же, как и других аналогичных систем, лежит понятие окна. Каждое окно имеет рамку и заголовок.Рамка использует

Навигация по дискам и каталогам с помощью пиктограммы
«Мой компьютер» пиктограмма «Мой компьютер» дает доступ к файловой системе ПК и позволяет запустить любое приложение. Для этого необходимо дважды щелкнуть значок «

Лекция 25.
Тема: «Запуск операционной системы. Работа с окнами, папкам и файлами». Для создания новой папки в приложении «Мой компьютер» нужно перейти в папку, где необходимо создать

Лекция 26.
Тема: «Основные возможности текстового редактора Word». В последнее время все большую популярность среди широкого круга пользователей завоевывает текстовый редактор Word д

Для отмены удаления
- на панели инструментов пиктографического меню нажать на кнопку с изображением изогнутой влево стрелки; - или использовать команду меню ПРАВКА – ОТМЕНИТЬ ВВОД. Добавление

Лекция 28.
Тема: «Работа с электронными таблицами в программе Excel». Для представления данных в удобном виде используют таблицы. Компьютер расширяет возможности использования таблиц

Ввод текста и чисел
Ввод текста осуществляется непосредственно в текущую ячейку или в строку формул, располагающуюся в верхней части окна программы непосредственно под панелями инструментов. Содержимое строки ф

Форматирование содержимого ячеек
Текстовые данные по умолчанию выравниваются по левому краю ячейки, а числа – по правому. Способ выполнения вычисления не зависит от того, каким способом данные отформатированы, но для человека внеш

Лекция 29.
Тема: «Диаграмма-графическое представление и редактирование данных». Большую помощь при обработке и анализе информации оказывает ее графическое представление. Это неудивит

Категория гаджетов регуляторы громкости для Windows 7 и 8 включает в себя гаджеты на рабочий стол, выполняющие функцию регулирования звука на компьютере. Установив один из таких гаджетов, вы сможете настраивать звук, а также задавать и сохранять параметры звучания для определенных стилей музыки.

Звук и громкость – понятия субъективные. То, что для вас кажется оптимальным уровнем, вашим коллегам или домочадцам может показаться слишком громким. И наоборот, то, что вы хорошо слышите, находясь непосредственно за компьютером, не всегда доступно людям, которые находятся на определенном расстоянии.

Таким образом, включение, отключение и регулировка звука являются одной из важных сопутствующих функций при работе с компьютером. Однако делать это с помощью клавиатуры или через панель управления не всегда удобно, особенно, если манипуляции с громкостью необходимо осуществлять почти мгновенно. Именно поэтому для повышения комфорта управления звуком целесообразно скачать микшер громкости для Windows 7 и установить его непосредственно на рабочем столе. Управляются такие мини-приложения с помощью клавиш и колесика мыши либо кнопками, размещенными на интерфейсе самого гаджета, что позволяет производить манипуляции со звуком быстро и просто.

Каковы возможности подобных мини-приложений для операционной системы Виндовс 7? Мы постарались собрать в коллекции наиболее разноплановые и мультифункциональные виджеты, чтобы вы смогли без затруднений выбрать подходящий для ваших целей. Самые простые программы позволяют увеличить или уменьшить громкость воспроизведения, включить или отключить звук. Например, если вы устанавливаете на электронном устройстве сигнал для пробуждения или напоминания, будет идеально сочетаться с гаджетом для изменения громкости и отключения звука. Так ваш будильник не поднимет с постели вместе с вами тех домочадцев, которым сегодня нет необходимости вскакивать ни свет, ни заря.

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

Кроме того, можно выбрать мультифункциональную утилиту, в которой совмещены регулятор громкости для Windows 7 и яркости экрана, часы, корзина, индикатор уровня заряда батареи, монитор загрузки процессора, заметки, слайды, таймер, менеджер управления операционной системой, быстрый запуск программ и прочие полезные опции. Занимая минимум места и на экране, и на диске, такие программы позволят существенно оптимизировать рабочий процесс и повысить комфорт пребывания пользователя за компьютером, при этом не требуют использования никаких дополнительных настроек.

Где скачать микшер громкости для Windows 7? Не тратьте время на поиски!

Прогулявшись по страницам нашего сайта, вы найдете в обширном и разноплановом структурированном для удобства посетителей каталоге любые гаджеты под операционную систему Виндовс 7, в том числе, и мини-приложения, позволяющие быстро и эффективно управлять качеством и громкостью звука. Единственное, что вам нужно сделать, - выбрать подходящую утилиту, скачать регулятор громкости для Windows 7 и установить его на рабочий стол в любом удобном месте.

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

Слушать любимую музыку и наслаждаться увлекательными фильмами, прослушивать аудиокниги и смотреть видеоролики, получать полезные знания с помощью видео- или аудиоуроков и совершать другие необходимые действия, связанные со звуком, не мешая при этом тем, кто вас окружает, теперь еще проще: достаточно скачать регулятор громкости для Windows 7 на любое компьютерное устройство, которым вы пользуетесь, и всего за несколько минут оптимизировать процесс управления звуком по собственному усмотрению. Заходите на наш сайт регулярно, пополняйте свой рабочий стол актуальными новинками и превращайте процесс использования всех доступных инструментов Виндвос в необременительное удовольствие!

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

Позволю себе привести здесь пару ссылок на сайты, автором и/или идейным вдохновителем которых является этот человек – Александр Макарчук из города Борисов, Беларусь:

Для работы на компьютере Александр использовал программу «Vocal Joystick» - разработку студентов Университета штата Вашингтон, выполненную на деньги Национального Научного Фонда (NSF). См. melodi.ee.washington.edu/vj

Не удержался

Кстати, на сайте университета (http://www.washington.edu/) 90% статей именно про деньги. Трудно найти что-нибудь про научную работу. Вот, например, выдержки с первой страницы: «Том, выпускник университета, раньше питался грибами и с трудом платил за квартиру. Теперь он старший менеджер ИТ-компании и кредитует университет», «Большие Данные помогают бездомным», «Компания обязалась заплатить 5 миллионов долларов за новый учебный корпус».

Это одному мне режет глаз?


Программа была сделана в 2005-2009 годах и хорошо работала на Windows XP. В более свежих версиях Windows программа может зависнуть, что неприемлемо для человека, который не может встать со стула и её перезапустить. Поэтому программу нужно было переделать.

Исходных текстов нет, есть только отдельные публикации, приоткрывающие технологии, на которых она основана (MFCC, MLP – читайте об этом во второй части).

По образу и подобию была написана новая программа (месяца за три).

Собственно, посмотреть, как она работает, можно :

Скачать программу и/или посмотреть исходные коды можно .

Никаких особенных действий для установки программы выполнять не надо, просто щёлкаете на ней, да запускаете. Единственное, в некоторых случаях требуется, чтобы она была запущена от имени администратора (например, при работе с виртуальной клавиатурой “Comfort Keys Pro”):

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

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

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

Часть II. Как это устроено?

Из опубликованных материалов о программе «Vocal Joystick» было известно, что работает она следующим образом:
  1. Нарезка звукового потока на кадры по 25 миллисекунд с перехлёстом по 10 миллисекунд
  2. Получение 13 кепстральных коэффициентов (MFCC) для каждого кадра
  3. Проверка того, что произносится один из 6 запомненных звуков (4 гласных и 2 согласных) при помощи многослойного персептрона (MLP)
  4. Воплощение найденных звуков в движение/щелчки мыши
Первая задача примечательна лишь тем, что для её решения в реальном времени пришлось вводить в программу три дополнительных потока, так как считывание данных с микрофона, обработка звука, проигрывание звука через звуковую карту происходят асинхронно.

Последняя задача просто реализуется при помощи функции SendInput.

Наибольший же интерес, мне кажется, представляют вторая и третья задачи. Итак.

Задача №2. Получение 13 кепстральных коэффициентов

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

И среди тех, кто занимается распознаванием речи, идёт поиск «философского камня» - набора признаков, которые бы однозначно классифицировали звуковую волну.

Из тех признаков, что доступны широкой публике и описаны в учебниках, наибольшее распространение получили так называемые мел-частотные кепстральные коэффициенты (MFCC).

История их такова, что изначально они предназначались совсем для другого, а именно, для подавления эха в сигнале (познавательную статью на эту тему написали уважаемые Оппенгейм и Шафер, да пребудет радость в домах этих благородных мужей. См. A. V. Oppenheim and R.W. Schafer, “From Frequency to Quefrency: A History of the Cepstrum”).

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

Являются ли MFCC хорошим классификатором для звуков? Я бы не сказал. Один и тот же звук, произнесённый мною в разные микрофоны, попадает в разные области пространства MFCC-коэффициентов, а идеальный классификатор нарисовал бы их рядом. Поэтому, в частности, при смене микрофона вы должны заново обучать программу.

Это всего лишь одна из проекций 13-мерного пространства MFCC в 3-мерное, но и на ней видно, что я имею в виду – красные, фиолетовые и синие точки получены от разных микрофонов: (Plantronix, встроенный массив микрофонов, Jabra), но звук произносился один.

Однако, поскольку ничего лучшего я предложить не могу, также воспользуюсь стандартной методикой – вычислением MFCC-коэффициентов.

Чтобы не ошибиться в реализации, в первых версиях программы в качестве основы был использован код из хорошо известной программы CMU Sphinx, точнее, её реализации на языке C, именующейся pocketsphinx, разработанной в Университете Карнеги-Меллона (мир с ними обоими! (с) Хоттабыч).

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

* This work was supported in part by funding from the Defense Advanced * Research Projects Agency and the National Science Foundation of the * United States of America, and the CMU Sphinx Speech Consortium.
Мне это показалось неприемлемым, и пришлось код переписать. Это сказалось на быстродействии программы (в лучшую сторону, кстати, хотя «читабельность» кода несколько пострадала). Во многом благодаря использованию библиотек “Intel Performance Primitives”, но и сам кое-что оптимизировал, вроде MEL-фильтра. Тем не менее, проверка на тестовых данных показала, что получаемые MFCC-коэффициенты полностью аналогичны тем, что получаются при помощи, например, утилиты sphinx_fe.

В программах sphinxbase вычисление MFCC-коэффициентов производится следующими шагами:

Шаг Функция sphinxbase Суть операции
1 fe_pre_emphasis Из текущего отсчёта вычитается большая часть предыдущего отсчета (например, 0.97 от его значения). Примитивный фильтр, отбрасывающий нижние частоты.
2 fe_hamming_window Окно Хемминга – вносит затухание в начале и конце кадра
3 fe_fft_real Быстрое преобразование Фурье
4 fe_spec2magnitude Из обычного спектра получаем спектр мощности, теряя фазу
5 fe_mel_spec Группируем частоты спектра [например, 256 штук] в 40 кучек, используя MEL-шкалу и весовые коэффициенты
6 fe_mel_cep Берём логарифм и применяем DCT2-преобразование к 40 значениям из предыдущего шага.
Оставляем первые 13 значений результата.
Есть несколько вариантов DCT2 (HTK, legacy, классический), отличающихся константой, на которую мы делим полученные коэффициенты, и особой константой для нулевого коэффициента. Можно выбрать любой вариант, сути это не изменит.

В эти шаги ещё вклиниваются функции, которые позволяют отделить сигнал от шума и от тишины, типа fe_track_snr, fe_vad_hangover, но нам они не нужны, и отвлекаться на них не будем.

Были выполнены следующие замены для шагов по получению MFCC-коэффициентов:

Задача №3. Проверка того, что произносится один из 6 запомненных звуков

В программе-оригинале «Vocal Joystick» для классификации использовался многослойный персептрон (MLP) – нейронная сеть без новомодных наворотов.

Давайте посмотрим, насколько оправдано применение нейронной сети здесь.

Вспомним, что делают нейроны в искусственных нейронных сетях.

Если у нейрона N входов, то нейрон делит N-мерное пространство пополам. Рубит гиперплоскостью наотмашь. При этом в одной половине пространства он срабатывает (выдаёт положительный ответ), а в другой – не срабатывает.

Давайте посмотрим на [практически] самый простой вариант – нейрон с двумя входами. Он, естественно, будет делить пополам двумерное пространство.

Пусть на вход подаются значения X1 и X2, которые нейрон умножает на весовые коэффициенты W1 и W2, и добавляет свободный член C.


Итого, на выходе нейрона (обозначим его за Y) получаем:

Y=X1*W1+X2*W2+C

(опустим пока тонкости про сигмоидальные функции)

Считаем, что нейрон срабатывает, когда Y>0. Прямая, заданная уравнением 0=X1*W1+X2*W2+C как раз и делит пространство на часть, где Y>0, и часть, где Y<0.

Проиллюстрируем сказанное конкретными числами.

Пусть W1=1, W2=1, C=-5;

Теперь посмотрим, как нам организовать нейронную сеть, которая бы срабатывала на некоторой области пространства, условно говоря – пятне, и не срабатывала во всех остальных местах.

Из рисунка видно, что для того, чтобы очертить область в двумерном пространстве, нам потребуется по меньшей мере 3 прямых, то есть 3 связанных с ними нейрона.

Эти три нейрона мы объединим вместе при помощи ещё одного слоя, получив многослойную нейронную сеть (MLP).

А если нам нужно, чтобы нейронная сеть срабатывала в двух областях пространства, то потребуется ещё минимум три нейрона (4,5,6 на рисунках):

И тут уж без третьего слоя не обойтись:

А третий слой – это уже почти Deep Learning…

Теперь обратимся за помощью к ещё одному примеру. Пусть наша нейронная сеть должна выдавать положительный ответ на красных точках, и отрицательный – на синих точках.

Если бы меня попросили отрезать прямыми красное от синего, то я бы сделал это как-то так:

Но нейронная сеть априори не знает, сколько прямых (нейронов) ей понадобится. Этот параметр надо задать перед обучением сети. И делает это человек на основе… интуиции или проб и ошибок.

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

Но даже если число нейронов достаточно, в результате тренировки сеть может «не сойтись», то есть достигнуть некоторого стабильного состояния, далёкого от оптимального, когда процент ошибок будет высок. Как вот здесь, верхняя перекладина улеглась на два горба и никуда с них не уйдёт. А под ней большая область, порождающая ошибки:

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

- Что ты думаешь, доедет то колесо, если б случилось, в Москву или не доедет?
- А ты как думаешь, сойдётся ента нейронная сеть или не сойдётся?

Есть ещё один неприятный момент, связанный с нейронными сетями. Их «забывчивость».

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

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

А есть одна маленькая, но очень существенная деталь.

Я очень хорошо могу отделить красное сердечко от синего фона отрезками прямых в двумерном пространстве.

Я неплохо смогу отделить плоскостями статую Венеры от окружающего её трёхмерного пространства.

Но в четырёхмерном пространстве я не смогу ничего, извините. А в 13-мерном - тем более.

А вот для нейронной сети размерность пространства препятствием не является. Я посмеивался над ней в пространствах малой размерности, но стоило выйти за пределы обыденного, как она меня легко уделала.

Тем не менее вопрос пока открыт – насколько оправдано применение нейронной сети в данной конкретной задаче, учитывая перечисленные выше недостатки нейронных сетей.

Забудем на секунду, что наши MFCC-коэффициенты находятся в 13-мерном пространстве, и представим, что они двумерные, то есть точки на плоскости. Как в этом случае можно было бы отделить один звук от другого?

Пусть MFCC-точки звука 1 имеют среднеквадратическое отклонение R1, что [грубо] означает, что точки, не слишком далеко отклоняющиеся от среднего, наиболее характерные точки, находятся внутри круга с радиусом R1. Точно так же точки, которым мы доверяем у звука 2 находятся внутри круга с радиусом R2.

Внимание, вопрос: где провести прямую, которая лучше всего отделяла бы звук 1 от звука 2?

Напрашивается ответ: посередине между границами кругов. Возражения есть? Возражений нет.
Исправление: В программе эта граница делит отрезок, соединяющий центры кругов в соотношении R1:R2, так правильнее.

И, наконец, не забудем, что где-то в пространстве есть точка, которая является представлением полной тишины в MFCC-пространстве. Нет, это не 13 нулей, как могло бы показаться. Это одна точка, у которой не может быть среднеквадратического отклонения. И прямые, которыми мы отрежем её от наших трёх звуков, можно провести прямо по границам окружностей:

На рисунке ниже каждому звуку соответствует кусок пространства своего цвета, и мы можем всегда сказать, к какому звуку относится та или иная точка пространства (или не относится ни к какому):

Ну, хорошо, а теперь вспомним, что пространство 13-мерное, и то, что было хорошо рисовать на бумаге, теперь оказывается тем, что не укладывается в человеческом мозгу.

Так, да не так. К счастью, в пространстве любой размерности остаются такие понятия, как точка, прямая, [гипер]плоскость, [гипер]сфера.

Мы повторяем все те же действия и в 13-мерном пространстве: находим дисперсию, определяем радиусы [гипер]сфер, соединяем их центры прямой, рубим её [гипер]плоскостью в точке, равно отдалённой от границ [гипер]сфер.

Никакая нейронная сеть не сможет более правильно отделить один звук от другого.

Здесь, правда, следует сделать оговорку. Всё это справедливо, если информация о звуке – это облако точек, отклоняющихся от среднего одинаково во всех направлениях, то есть хорошо вписывающееся в гиперсферу. Если бы это облако было фигурой сложной формы, например, 13-мерной изогнутой сосиской, то все приведённые выше рассуждения были бы не верны. И возможно, при правильном обучении, нейронная сеть смогла бы показать здесь свои сильные стороны.

Но я бы не рисковал. А применил бы, например, наборы нормальных распределений (GMM), (что, кстати и сделано в CMU Sphinx). Всегда приятнее, когда ты понимаешь, какой конкретно алгоритм привёл к получению результата. А не как в нейронной сети: Оракул, на основе своего многочасового варения бульона из данных для тренировки, повелевает вам принять решение, что запрашиваемый звук – это звук №3. (Меня особенно напрягает, когда нейронной сети пытаются доверить управление автомобилем. Как потом в нестандартной ситуации понять, из-за чего машина повернула влево, а не вправо? Всемогущий Нейрон повелел?).

Но наборы нормальных распределений – это уже отдельная большая тема, которая выходит за рамки этой статьи.

Надеюсь, что статья была полезной, и/или заставила ваши мозговые извилины поскрипеть.

Если вы ярый меломан, который много сидит за компьютером, то наверняка часто слушаете на нем музыку, у вас установлен классный мультимедиа проигрыватель, который позволяет вам максимально удобно работать с вашей музыкальной коллекцией. Но может ли ваш проигрыватель дать вам возможность удобно и наглядно регулировать громкость? У многих пользователей ноутбуков есть такая возможность. Пользователям же стационарных компьютеров приходится хуже, так как громкость можно регулировать либо с мультимедийной клавиатуры, либо мышкой тыкать в «Регулятор громкости». Но существует еще один весьма неплохой и наглядный способ регулировать громкость с помощью колесика мышки, наведя курсор на панель задач. При этом на рабочем столе будет показываться большой и стильный регулятор, который покажет текущее состояние громкости. Все это можно сделать с помощью утилиты Volume2.

Программа позволяет достаточно гибко настроить регулятор громкости, включая его внешний вид на панели задач и рабочем столе. В настройках можно выбрать несколько вариантов отображения регулятора на рабочем столе вашего компьютера. Стоит заметить, что выглядят они весьма стильно!

Не стоит думать, что на этом возможности программы заканчиваются! Помимо красивого регулятора вы можете менять значения огромного количества самых разнообразных настроек. На вкладке «Основные» вы найдете список устройств, для которых можно изменять громкость, там же можно задать отдельное приложение, в котором следует регулировать громкость.

На вкладке «Системный трей» в Volume2 можно задать внешний вид и настройки индикатора, расположенного в области уведомлений (трее). Тут вы найдете множество самых разнообразных вариантов отображения индикатора, которые красиво меняются при изменении громкости. Главное, при использовании этого индикатора, отключить стандартный, чтобы в области часов был один, а не два индикатора.

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

Помимо управления громкостью программа Volume2 позволяет задавать различные дополнительные возможности, которые к громкости не имеют никакого отношения. Например, можно назначать горячие клавиши не только на управление громкостью, но и на управление яркостью экрана, извлекать диски из CD/DVD привода, а также безопасно извлекать USB-устройства. Еще одной интересной особенностью программы является возможность задавать расписание выполнения различных задач. Можно автоматизировать процесс выключения или снижения уровня громкости в определенное время суток, автоматически запускать приложения в заданное время, а также по расписанию показывать на экране сообщения.

В целом, Volume2 достаточно сильно напичкана самыми разнообразными настройками, которые могут показаться полезными некоторым меломанам. Естественно, программа полностью русифицирована (автор наш с вами соотечественник) и разобраться в настройках не составит труда, если у вас есть на это время и желание кастомизировать свою систему, сделав ее максимально удобной для работы и прослушивания музыки. Работает утилита под операционными системами Windows 7/Vista/XP.

Мы рассмотрим:

  • создание звуковых объектов (объектов типа Sound);
  • привязку звуков к таким объектам;
  • управление воспроизведением звука;
  • динамическое изменение параметров звучания (громкость и панорамирование);
  • загрузку в объект Sound внешних.mp3 файлов.

Объект Sound появился в 5-й версии Flash, поэтому все приёмы,
рассмотренные в статье, кроме загрузки внешних.mp3 файлов, могут быть использованы
и в 5-й версии.

Создание звуковых объектов

Начнём. Вы уже наверное догадались, чтобы производить какие-либо
операции со звуком, нужно создать объект типа Sound . Сделать это очень
просто. Существует стандартная конструкция

soundObject = new Sound(target);

где soundObject - это имя создаваемого звукового объекта, а target
- необязательный параметр, указывающий объект типа MovieClip, или уровень. Если
мы хотим, чтобы наш звуковой объект работал только в одном MovieClip-е или на
одном уровне, то мы должны его создавать с указанием данного параметра:

movieSound = new Sound("SomeClip");

MovieSound = new Sound("_root.teddy.mouth");

LevelSound = new Sound("_level1");

Если же планируется использовать объект в любом месте вашей флэшки,
то он создаётся без параметров:

globalSound = new Sound();

Привязка звука к объектам Sound

Объект Sound позволяет вопроизводить звуки, не втавленные непосредственно
в ключевой кадр временной шкалы. Но для этого их надо сначала поместить в библиотеку,
а затем экспортировать для использования в ActionScript.

Для помещения звука в библиотеку достаточно выбрать "File
-> Import to Library...", и в появившемся окне указать имя звукового
файла.

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

кликаем правой кнопкой мыши на названии звука, и в появившемся
контекстном меню выбираем "Linkage...". Должно появится подобное окошко:

В поле Identifier мы вводим идентификатор (имя) звукового ресурса.
Можно включить галочку "Export in first frame", тогда звук будет загружен
уже в первом кадре мульта, однако, такой способ неприменим при хоть сколько-нибудь
больших звуках, т.к. до начала загрузки 1-го кадра (даже прелоадера не видно!)
мы видим пустое место, появляется ощущение "зависшего клипа". Поэтому
рекомендуется выключать эту галочку, а в кадре где нужна загрузка звука, помещать
его на временную шкалу с параметрами Sync Stop. Тогда звук не будет загружен
до этого кадра и можно спокойно использовать прелоадер.

Далее, чтобы привязать звуковой ресурс к звуковому объекту, нужно
воспользоваться функцией attachSound(idName) , в которой параметр idName
указывает идентификатор звукового ресурса:

mySound = new Sound();

MySound.attachSound("tada");

После этого наш звуковой объект готов к манипуляциям.

Воспроизведение и остановка звуков

Основными действиями, выполняемыми со звуковыми объектами являются,
конечно же, воспроизведение и остановка воспроизведения.

Для того, чтобы воспроизвести звук, используется функция start(offset,
loops)
объекта Sound . Параметр offset , указывает смещение
в секундах, от начала звукового фрагмента, а loops - количество повторений
проигрываемого фрагмента.

Например, если мы хотим проиграть вторую половину 20-тисекундного
фрагмента 3 раза, мы запишем:

someSoundObject.play(10, 3);

Звук начнёт проигрываться с 10-й секунды.

Оба параметра функции start() являются необязательными.
По умолчанию звук проигрывается с самого начала один раз:

someSoundObject.play();

Можно повторить звуковой фрагмент несколько раз с начала, тогда
мы указываем нулевое смещение:

someSoundObject.play(0, 5);

Чтобы остановить проигрывание, используется функция stop(idName) .
Вызванная без параметров, функция останавливает все звуки. Указав параметр idName,
обозначающий идентификатор звука, можно остановить только один специфический
звук:

globalSnd.stop();

SomeSnd.stop("tada");

Динамическое изменение параметров звука

Объект Sound позволяет динамически устанавливать уровень громкости
и баланс (панорамирование) звука. Существуют также функции для получения значения
баланса и громкости.

Для установки громкости звука используется функция setVolume(value) .
Параметр value может принимать значения от 0 (минимальный уровень) до
100 (максимальный уровень). По умолчанию уровень громкости равен 100.

Для установки баланса используется функция setPan(value) .
Здесь параметр value может принимать значения от -100 (весь звук в левом
канале) до 100 (весь звук в правом канале). Значение 0 (оно стоит по умолчанию)
означает, что звук равномерно распределён между обоими каналами.

globalSnd.setVolume(50); // Половинная
громкость

GlobalSnd.setPan(70); // Сместить звук по большей части в правый канал

Можно использовать функции getVolume() и getPan()
для получения текущего значения громкости и баланса соответственно.

currentVolume = someSnd.getVolume();

CurrentPan = someSnd.getPan();

Можно одновременно устанавливать все параметры звука при помощи
функции setTransform() , но мы её в данной статье не рассматриваем.

Можно в цикле вызывать функции setVolume() и setPan() ,
плавно изменяя значение параметра, и тем самым создавать эффекты затухающего,
возрастающего и/или перемещающегося звука.

Во Flash MX появилась возможность загрузки внешних файлов. Для
этого используется функция loadSound(url, stream) объекта Sound .
Первый параметр, url , указывает путь к файлу. Второй, stream ,
является логической (булевой) переменной, определяющий потоковый режим загрузки
звукового файла. Если значение stream равно false , то Flash дождётся
полной загрузки файла, прежде чем его воспроизводить. Если же stream
равен true , то файл может воспроизводиться в потоковом режиме не загрузившись
полностью. Данный режим рекомендуется использовать только на быстрых каналах
связи или при использовании на локальной машине, т.к. потоковое воспроизведение
по нашим каналам Интернет часто приводит к прерыванию воспроизведения длинными
паузами:).

snd1 = new Sound();

Snd1.loadSound("track03.mp3", true);

Snd2 = new Sound();

Snd2.loadSound("http://someserver.com/some_file.mp3", false);

Специально для этого урока я сделал маленький проигрыватель,
который использует подгрузку внешних файлов и позволяет менять громкость и баланс
проигрываемой композиции. Он также позволяет отслеживать сколько процентов запрошенной
композиции загружено. Этот пример можно скачать ( ,
218k), и поэкспериментировать самому.

Внимание! mp3 файлы не включены в архив с примером, поэтому вам
придётся использовать свои, предварительно изменив пути к ним в параметрах компонента
ComboBox.

Надеюсь, данная статья оказалась вам полезной.




Top