- Блог проекта AIMP
- Анонсы / Планы / Заметки
- Тестирование методов вывода звука
- Тест1: В поисках побитово точного вывода
- Тест2: Оставшиеся методы вывода звука
- Резюме
- Тестирование методов вывода звука : 14 комментариев
- Добавить комментарий Отменить ответ
- MME, Windows DirectSound или Wasapi
- 2 ответов
- ЗВУКОМАНИЯ
- WASAPI
- WASAPI
- WASAPI
- скачать WASAPI + музыка во флак можно ЗДЕСЬ
- Аудио архитектура Windows начиная с Виста и далее
- Группировка аудио потоков
- WASAPI — Стиль события
Блог проекта AIMP
Анонсы / Планы / Заметки
Тестирование методов вывода звука
Чем отличаются методы вывода звука и какой из них лучше использовать? Попытаемся разобраться…
Подопытные методы вывода звука:
- DirectSound
- WASAPI (Shared Mode)
- WASAPI (Exclusive Mode)
- ASIO (ASIO4ALL)
- Kernel Streaming
Конфигурация
- Подопытный плеер: Foobar v1.1.11
Он умеет выводить звук через все интересующие нас методы - ОС: Windows XP Pro SP3 Rus x86 / Windows 7 Ultimate SP1 Rus x86
Windows XP добавлена к тестированию поскольку: KernelStreaming не работает на современных версиях ОС; Реализация DirectSound начиная с Windows Vista претерпела серьезные изменения - Звуковая карта: Virtual Audio Streaming
Виртуальная звуковая карта позволяет исключить особенности железа и реализации драйверов к нему. В добавок к этому, нам будет проще списать с нее выходные данные - Настройки плеера и ОС: 44.1 кГц, 16 Бит/сэмпл, громкость 100%, эквалайзер и другие эффекты выключены
Методика тестирования
Для замеров я использовал RightMark Audio Analyzer (RMAA). В ней сгенерировал тестовый WAV-файл, со следующими характеристиками: 44.1 кГц, 16 Бит/сэмпл. Далее, воспроизводил этот файл в плеере, выбирая различные методы вывода звука, записывал выходной сигнал напрямую в файл и анализировал с помощью той же RMAA.
Тест1: В поисках побитово точного вывода
Первым делом решил протестировать так называемые «побитово точные» методы вывода — WASAPI Exclusive, Kernel Streaming и ASIO (посредством ASIO4ALL). Ходят мнения, поскольку эти методы обходят микшер Windows, то дают наиболее качественный, чуть ли не идеальный звук. Проверим!
Выходной поток будем сравнивать с входным с помощью RMAA, а так же побитово с помощью утилитки сравнения файлов. Поехали!
Нелинейные искажения + шум (при уровне -3 дБ)
Параметры одинаковые, графики совпали. Вроде можно говорить о побитово точном выводе. Но сравнивая входной и выходной файлы с помощью специальной утилитки — наткнулся на странный факт: для ASIO4ALL файлы абсолютно разные, хотя для WASAPI Exclusive и Kernel Streaming полное совпадение.
Причина оказалась в нелинейной фазочастотной характеристике (ФЧХ), а так же в присутствии фазовых задержек:
ASIO4ALL Фазовая задержка
Выводы
WASAPI Exclusive и Kernel Streaming действительно дают побитово точный вывод звука, а вот при использовании ASIO4ALL, формально, ни о каком побитовом выводе речи быть не может. Да, системный микшер ASIO4ALL обходит, но вносит в сигнал собственные искажения в виде нелинейной ФЧХ и фазовых задержек. С другой стороны — фазовые искажения (если они одинаковы во всех каналах) никак не воспринимаются на слух.
Тест2: Оставшиеся методы вывода звука
Нелинейные искажения + шум (при уровне -3 дБ)
Выводы
Что же мы видим? DirectSound в Windows XP оказался очень крут. Побитовое сравнение входного и выходного файла это подтвердило: файлы одинаковые! Честно говоря, я сам не поверил измерениям, но но два повторных измерения дали тот же результат. DirestSound в Windows XP выдает побитово точный вывод звука! Разумеется, это верно, если микшер не работает (отсутствуют другие системные или программные звуки) и системная громкость установлена на 100%.
Если сравнить Direct Sound Windows 7 и WASAPI — первый немного лучше. Но в общем и целом, оба метода вносят совершенно незначительные искажения в исходный сигнал. Едва ли со среднестатистическим оборудованием эту разницу возможно услышать.
Резюме
Что же мы имеем? А имеем мы вот что: три побитово точных метода вывода звука: DirectSound в (Windows XP), WASAPI Exclusive, Kernel Streaming (последний поддерживается считанными Плеерами). Кроме этого мы имеем ASIO (тот, который настоящий, не ASIO4ALL), который мне протестировать не удалось, да и поддерживается он ограниченным количеством устройств. И ещё мы имеем два метода вывода, которые вносят небольшие искажения в исходный сигнал: DirectSound Windows 7 и WASAPI Shared. Но, подчёркиваю, искажения эти настолько незначительны, что на слух их распознать можно лишь имея отнюдь недешевое оборудование.
Какой же метод вывода включить в Плеере?
- Windows XP : однозначно DirectSound — отлично работает, не вносит искажений
- Windows 7 : тут не всё однозначно. Для получения супер-качественного звука можно использовать WASAPI Exclusive или ASIO (при наличии поддержки). Но эти методы блокируют другие звуки в системе, что не всегда удобно. Гораздо удобнее использовать WASAPI или DirectSound.
Kernel Streaming советовать не буду. Пусть этот метод и крут, но его поддержку я встречал лишь у Foobar2000 на уровне «test», и этот метод не работает на ОС начиная с Vista.
Что касается ASIO4ALL : в Windows 7 мы действительно получим небольшое улучшение качества звука (если сравнивать с WASAPI или DirectSound), а вот в Windows XP выгода от использования минимальна: при отсутствии посторонних звуков, идущих на микшер, и 100% системной громкости — местный DirectSound выдает побитово точный звук.
Спасибо за внимание. Надеюсь кому-то данные исследования будут полезны.
Тестирование методов вывода звука : 14 комментариев
А Windows Default это что?
Это вообще не метод вывода, а устройство (наушники или динамики — то, которое вы назначили по умолчанию для вывода звука)
Windows Default — устройство по умолчанию, согласно настройкам ОС. В AIMP-е, для каждого из методов вывода звука (за исключением ASIO), есть свой «Windows Default»
Ну у меня есть выбор или Realtek Hd или DirectSound: Windows Default вот так 🙂 а еще в другом плеере есть DirectSound8 audio slink или это одно и тоже Direct ? 🙂
Покажите лучше скриншоты
А чем можно сделать скриншоты?
Считаю необходимым сделать в AIMP вывод через WSAPI Exclusive. Сейчас для прослушивания lossless использую foobar2000, но один плеер лучше, чем два. Кстати, буду благодарен на ссылку с описанием тракта AIMP3, если таковая информация имеется.
> буду благодарен на ссылку с описанием тракта AIMP3, если таковая информация имеется.
вот http://www.aimp.ru/blogs/?p=88
Попробовал в наушниках послушать FLAC через WSAPI Shared — звук отчётливо чище, особено высокие частоты, но загрузка процессора при этом на уровне 33%, причём 3-е из трёх ядер загружено «в потолок», через DirectSound нагрузка CPU 1-2%. WSAPI Exclusive — к сожалению протестировать не удалось, AIMP виснет, видимо дрова моего SB Audigy для 7-ки не тянут.
Direct Sound однозначно 🙂
Неплохая статья, которая развенчивает многие мифы по поводу суперкачества ASIO
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
MME, Windows DirectSound или Wasapi
Так im с помощью Audacity и было интересно, какое устройство записи / системы я должен использовать для лучшего качества звука? Есть MME, Windows DirectSound и Wasapi.Im на ноутбуке Windows 7, и я попробовал их все, и я не вижу большой разницы между three.By по умолчанию настройки были на MME.
2 ответов
MME часто является выбором по умолчанию, так как он поддерживается большинством ОС Windows (MME был выпущен в 1991). Между DirectSound и WASAPI нет большой разницы, так как DirectSound-это в основном просто интерфейс, связанный с DirectX, для интерфейса Windows Audio Session API (WASAPI). WASAPI имеет самую низкую задержку из всех (по дизайну) и поэтому должен быть предпочтительным для записи (особенно когда дело доходит до многодорожечного).
«MME: это Audacity по умолчанию и наиболее совместим со всеми аудио устройств.
Windows DirectSound: это более свежее, чем MME с потенциально меньшей задержкой.
Windows WASAPI: этот хост является самым последним интерфейсом Windows, который поддерживает Audacity, между приложениями (например, Audacity) и драйвером звуковой карты. WASAPI был впервые официально выпущен в 2007 году в Windows Vista. WASAPI особенно полезен для «loopback» устройства для записи воспроизведения на компьютере. Поддерживает 24-разрядные устройства записи. Воспроизведение эмулируется с помощью этого хоста. В результате ползунок воспроизведения на панели инструментов Mixer будет масштабировать только текущий уровень ползунка воспроизведения системы вверх или вниз, а не непосредственно манипулировать этим системным ползунком.»
все между кавычками произошло непосредственно от Audacity. Похоже, им было много, чтобы сказать о WASAPI.
Hi-Fi и High-End техника или энциклопедия звука и видео
ЗВУКОМАНИЯ
Hi-Fi и High-End техника или энциклопедия звука и видео
WASAPI
WASAPI
WASAPI — это драйвер с низкой задержкой, когда он используется в монопольном режиме и напрямую взаимодействует с драйвером аудиоустройства. Это собственный ASIO от Microsoft.
WASAPI
ASIO является проприетарным протоколом. Вы можете использовать только то, что поддерживает ваше аудиоустройство.
WASAPI является неотъемлемой частью Windows (Vista, ХР, 7, 10 и выше).
В принципе это работает со всеми аудио устройствами.
На практике не все комбинации аудиоприложений и драйверов аудиоустройств будут работать правильно с использованием этого интерфейса.
АСИО
В эксклюзивном режиме никакое другое приложение не может использовать ЦАП или звуковую карту.
Нет больше системных звуков и даже на полную громкость в стерео!
скачать WASAPI + музыка во флак можно ЗДЕСЬ
Поскольку WASAPI в эксклюзивном режиме напрямую обращается к драйверу аудиоустройства, поток, отправляемый на это устройство (внешний ЦАП), должен соответствовать возможностям этого устройства с точки зрения глубины в битах, частоты дискретизации, количества каналов и формата аудио (в большинстве случаев PCM) в противном случае это будет тишина.
- Приложение, использующее WASAPI, может сделать это, настроив аудиоустройство в соответствии с источником.
- В этом случае у нас почти идеальное воспроизведение.
- Это позволяет автоматически переключать частоту дискретизации.
- Автоматическое переключение частоты дискретизации и аппаратное обеспечение
Ustars_ЦАП + усилитель в классе А
В случае USB-ЦАП (с использованием драйверов основного режима) вы получаете автоматическое переключение частоты дискретизации с использованием эксклюзивного WASAPI.
- Большую часть времени встроенный звук позволяет автоматически переключать частоту дискретизации.
- Многие дискретные звуковые карты не допускают автоматического переключения с использованием WASAPI.
- Если дискретная звуковая карта поставляется с ASIO, лучше использовать этот драйвер, если вы хотите автоматическое переключение частоты дискретизации.
- Разработчик также может выбрать источник информации о возможностях аудиоустройства.
- Если источник монофонический, а аудиоустройство 2-канальное, пользователь может решить отправить один и тот же сигнал на оба канала.
Если частота дискретизации источника не поддерживается аппаратными средствами, например, источником 192 кГц с аудиоустройством 96 кГц, программа, использующая WASAPI, должна выполнить SRC (преобразование частоты дискретизации).
Это можно сделать, вызвав SRC, предоставленный Windows, или тот, который предоставлен приложением.
Аудио архитектура Windows начиная с Виста и далее
В Windows есть совершенно новый механизм микширования звука , поэтому WASAPI дает вам возможность подключиться непосредственно к нему, а не проходить через уровень абстракции.
Плюсы аудио движка:
Переход к 32-битной с плавающей запятой, а не к 16-битной, что значительно улучшает качество звука при работе с несколькими аудиопотоками или эффектами.
Переход от режима ядра к режиму пользователя с целью повышения стабильности системы (плохие драйверы не могут отключить систему).
Концепция конечных точек, а не аудиоустройств — для пользователей Windows проще отправлять звуки в «наушники» или записывать звук с «микрофона», а не требовать от них технической информации о звуковой карте, установленной в их системе.
Группировка аудио потоков
В Vista, ХР и выше вы можете сгруппировать все аудиопотоки из одного приложения и отдельно контролировать их громкость. Другими словами, регулятор громкости для каждого приложения. Это немного сложнее, чем может показаться на первый взгляд, потому что некоторые приложения, такие как IE, содержат все виды процессов и плагинов, которые все воспроизводят звук по-своему.
- По умолчанию все звуки отправляются в микшер.
- Микшер преобразует звук в 32-битное число с плавающей запятой и выполняет микширование.
- Результат прерывается и преобразуются обратно в формат, который принимает аудиодрайвер (в большинстве случаев это 16 или 24 бит).
WASAPI
Приложения, плееры отправляющие звук на микшер, должны следить за тем, чтобы частота дискретизации соответствовала частоте микшера по умолчанию. Это значение по умолчанию установлено на вкладке «Дополнительно» в звуковой панели.
Даже если источник соответствует частоте дискретизации по умолчанию, применяется сглаживание.
Если вы не применяете какие-либо эффекты для каждого потока или глобальные эффекты и
слушаете только одно приложение, выводящее звук, и частота дискретизации и битовая глубина, установленные для Ц, соответствуют частоте дискретизации материала, то теоретически не должно быть никакой разницы с оригиналом, потому что преобразование даже из 24-разрядного целого числа в 32-разрядное число с плавающей запятой без потерь.
foobar2000 Wasapi
Эксклюзивный режим ВАСАПИ
- WASAPI в эксклюзивном режиме обходит аудио движок (микшер).
- Преобразование в 32 применяемое микшером, исключаются.
- Он также блокирует аудиодрайвер; никакое другое приложение не может использовать аудиоустройство.
- Общий режим
- Это эквивалентно DS (Direct Sound).
- Весь звук отправляется на микшер.
- Приложение должно вызывать преобразование частоты дискретизации, если частота дискретизации отличается от значения, установленного на аудио-панели win.
Ustars ЦАПы + 11.28 ЦАПРЕ
Как правило, приложение отвечает за предоставление аудиобуферов Audio Engine в формате, который поддерживается аудио-движком. Форматы аудиосэмпла состоят из частоты дискретизации, битовой глубины и количества каналов. Собственная битовая глубина сэмплов, которую Audio Engine использует для внутреннего использования, составляет 32-битное число с плавающей запятой. Однако Audio Engine принимает большинство целочисленных форматов, которые до 32-бит. Кроме того, Audio Engine конвертирует большинство форматов в представление с плавающей запятой внутри.
Панель управления звуком задает требуемую частоту дискретизации в качестве «Формат по умолчанию». Формат по умолчанию определяет формат, который используется для предоставления контента аудиоустройством. Количество каналов, которые поддерживает Audio Engine, обычно является количеством АС для аудиоустройства.
Изменение частоты дискретизации и глубины в битах данных называется преобразованием частоты дискретизации. Приложение может решить написать свой собственный преобразователь частоты дискретизации. В качестве альтернативы, приложение может решить использовать API-интерфейсы, такие как PlaySound, WAVE, цифровой интерфейс музыкальных инструментов (MIDI) или микшер. В этих API преобразование происходит автоматически. Когда это необходимо, проигрыватель Windows Media выполняет преобразование частоты дискретизации в своем внутреннем конвейере Media Foundation.
Однако, если проигрыватель воспроизводит аудио, которое Audio Engine может обрабатывать изначально, проигрыватель перестраивает свой собственный конвейер без преобразователя частоты дискретизации. Такое поведение происходит, чтобы уменьшить промежуточные аудио преобразования и улучшить производительность.
Релейный предусилитель обзор
WASAPI можно использовать в режиме push и в режиме pull (стиль события).
- У пары асинхронных ЦАП USB были всевозможные проблемы с использованием режима push из-за проблем с буфером в WASAPI.
- Это было решено с помощью стиля WASAPI — Event.
- Звуковое устройство извлекает данные из системы.
- Большую часть времени вы не можете выбрать режим. Это просто зависит от того, как программист реализовал WASAPI в плеере.
- Разница между выполнением push и выполнением события заключается только в том, что отвечает за то, когда хост должен отправлять звук на оборудование.
На основе событий:
- Хост сообщает API, что он хочет получить информацию, когда наступает подходящий момент для отправки аудио,
- Хост может подготовить некоторое аудио в отдельном потоке, чтобы он был готов, когда API его запрашивает ,
- API запрашивает у хоста больше звука,
- Хост отправляет подготовленный буфер, если он был готов, или затем готовит буфер и отправляет его.
На основе push:
- Хост сообщает API, что он cообщит, когда наступит подходящий момент для отправки аудио.
- Хозяева готовят аудио, чтобы он был готов, когда API готов.
- Хосты спрашивают API, готов ли он.
- Если он не готов, ждет некоторое время и снова спрашивает
- Когда API отвечает, что он готов, хост отправляет подготовленный буфер. Он также может подготовить буфер в это время и отправить его.
WASAPI — Стиль события
Режим вывода позволяет звуковому устройству извлекать данные из плеера. Этот метод поддерживается не всеми аппаратными средствами, но рекомендуется при его поддержке.
WASAPI — Event Style имеет несколько преимуществ:
- Это позволяет аудиоподсистеме извлекать данные (когда установлены события) вместо передачи данных в систему. Это позволяет уменьшить размер буфера задержки и удалить ненадежный слой Microsoft.
- Он создает, использует и уничтожает все интерфейсы WASAPI из одного потока.
- Аппаратное обеспечение (или интерфейс WASAPI) никогда не видит паузы или сброса вызовов. Вместо этого, в режиме паузы или сброса тишина подается в тянущую петлю. Это устраняет необходимость в хакерских атаках для карт, окружающих свои буферы при паузе, сбросе и т. д. (ATI HDMI и т. д.).
- Это позволяет получить более прямой путь передачи данных к драйверу / оборудованию.
- Основной «цикл извлечения» использует круговой буфер без блокировки (система, которую Дж. Ривер построил для ASIO), так что полное выполнение запроса извлечения выполняется максимально быстро.
Для использования WASAPI требуется плеер, поддерживающий этот драйвер в эксклюзивном режиме.
Я думаю, что эксклюзив WASAPI немного более прозрачен по звуку, чем DS (Direct Sound), аудио-движок Win по умолчанию.
Однако, поскольку все, что отправляется на конечную точку аудио, должно точно соответствовать возможностям этого устройства, WASAPI также более проблематичен. Малейшее несоответствие по количеству каналов, битовой глубине или частоте дискретизации, и вы слышите тишину.
Советы по АСИО и ВАСАПИ
- Настройте медиаплеер для WASAPI и DS и выполните тест прослушивания.
- Если вы не слышите разницу, придерживайтесь DS.
- Если вы слышите разницу, используйте тот, который вы предпочитаете.
- WASAPI вообще не работает с дискретными звуковыми картами.
- В случае с USB ЦАП это лучший путь качеств.звука.
ЦАП 11.38 + ТДС 5
ИТОГИ. WASAPI — это интерфейс с низкой задержкой для драйвера аудиоустройства.
Обход микшера — это все, что он делает. Разработчик или пользователь приложения, использующие WASAPI, должен убедиться, что свойства аудиофайла + плеера и возможности аудиоустройства (внешний ЦАП) совпадают.