Введение

Speex – аудиокодек сжатия, разработанный специально для кодирования человеческой речи, а также кодек речи с открытым исходным кодом, который может использоваться в приложениях VoIP и подкастах. Он основан на алгоритме кодирования речи с кодовым возбуждением (CELP). Его разработчики утверждают, что Speex не подпадает ни под какие патентные ограничения и распространяется по пересмотренной (3-пунктной) лицензии BSD. Speex может использоваться с контейнером Ogg или передаваться напрямую по протоколам UDP/RTP. Также поддерживается контейнер FLV. Разработчики Speex рассматривают свой проект как дополнение к проекту универсального аудиокодека Vorbis. Speex – это кодек с потерями, то есть качество звука необратимо ухудшается для уменьшения размера файла. Проект Speex был начат 13 февраля 2002 года. Первые версии Speex распространялись под лицензией LGPL, но начиная с версии 1.0 beta 1, Speex лицензируется в версии BSD, разработанной Xiph.org. Анонс Speex 1.0 состоялся 24 марта 2003 года, после года разработки. Последняя стабильная версия кодера и декодера Speex – 1.2.1.

Описание

Speex предназначен для голосового IP (VoIP) и файлового сжатия. Целью разработки было создание кодека, оптимизированного для высококачественной речи и низкой скорости передачи данных. Для достижения этого кодек использует несколько битовых скоростей и поддерживает сверхширокополосный (32 кГц), широкополосный (16 кГц) и узкополосный (телефонного качества, 8 кГц) режимы. Поскольку Speex разрабатывался для VoIP, а не для сотовой связи, кодек должен быть устойчив к потере пакетов, но не к их повреждению. Все это привело к выбору в качестве метода кодирования кодирования с предсказанием по модели (CELP). Более высокие настройки часто полезны при кодировании неречевых звуков, таких как тоны DTMF, или если кодирование выполняется не в реальном времени. Переменная битовая скорость (VBR) Переменная битовая скорость (VBR) позволяет кодеку динамически изменять битовую скорость для адаптации к сложности кодируемого аудио. Например, для кодирования гласных и высокоэнергетических переходных процессов требуется более высокая битовая скорость для достижения хорошего качества, в то время как фрикативные звуки (например, «с» и «ф») можно адекватно закодировать меньшим количеством битов. Благодаря этому VBR может обеспечить более низкую битовую скорость при том же качестве или более высокое качество при заданной битовой скорости. Несмотря на свои преимущества, VBR имеет три основных недостатка: во-первых, указание только качества не гарантирует конечную среднюю битовую скорость. Во-вторых, для некоторых приложений реального времени, таких как голосовой IP (VoIP), важна максимальная битовая скорость, которая должна быть достаточно низкой для канала связи. В-третьих, шифрование речи, закодированной с помощью VBR, может не обеспечить полной конфиденциальности, поскольку фразы все еще могут быть идентифицированы (по крайней мере, в контролируемых условиях с небольшим словарем фраз) путем анализа закономерностей изменения битовой скорости. Средняя битовая скорость (ABR) Средняя битовая скорость решает одну из проблем VBR, динамически регулируя качество VBR для достижения заданной целевой битовой скорости. Поскольку регулировка качества/битовой скорости выполняется в реальном времени (в разомкнутом контуре), общее качество будет немного ниже, чем при кодировании в VBR с точно подобранными настройками качества для достижения целевой средней битовой скорости. Обнаружение голосовой активности (VAD) При включении VAD определяет, является ли кодируемое аудио речью или тишиной/фоновым шумом. VAD всегда неявно активируется при кодировании в VBR, поэтому эта опция полезна только при работе, отличной от VBR. В этом случае Speex обнаруживает периоды тишины и кодирует их с минимальным количеством битов, необходимым для воспроизведения фонового шума. Это называется генерацией комфортного шума (CNG). Последняя версия VAD, работавшая корректно, – 1.1.12; начиная с версии 1.2 она была заменена на простую систему обнаружения любой активности (Any Activity Detection). Прерывистая передача (DTX) Прерывистая передача – это дополнение к работе VAD/VBR, которое позволяет полностью прекратить передачу, когда фоновый шум стационарен. В файле для каждого отсутствующего кадра используется 5 бит (что соответствует 250 бит/с). Перцепционное улучшение Перцепционное улучшение – это часть декодера, которая при включении пытается уменьшить (восприятие) шума, возникающего в процессе кодирования/декодирования. В большинстве случаев перцепционное улучшение ухудшает качество звука объективно (отношение сигнал/шум), но субъективно звук все равно кажется лучше. Алгоритмическая задержка Каждый кодек вносит задержку в передачу. Для Speex эта задержка равна размеру кадра плюс некоторое время «предпросмотра», необходимое для обработки каждого кадра. В узкополосном режиме (8 кГц) задержка составляет 30 мс, а в широкополосном (16 кГц) – 34 мс. Эти значения не учитывают время, необходимое процессору для кодирования или декодирования кадров.

Приложения

Существует большая база приложений, поддерживающих кодек Speex. Примеры включают: потоковые приложения, такие как телеконференции (например, TeamSpeak, Mumble), системы VoIP (например, Asterisk), видеоигры (например, Xbox Live, Civilization 4, DropMix, вокальные треки и т. д.). Большинство из них основаны на фильтре DirectShow или кодеке OpenACM (например, Microsoft NetMeeting) в Microsoft Windows, или на референтной реализации libvorbis от Xiph.org для Linux (например, Ekiga). Также существуют плагины для многих аудиоплееров. Более подробная информация доступна на странице плагинов и программного обеспечения на сайте speex.org. Тип носителя для Speex – audio/ogg при использовании контейнера Ogg и audio/speex (ранее audio/x speex) при передаче через RTP или без контейнера. Система Land Warrior армии США, разработанная General Dynamics, также использует Speex для VoIP на радиостанции EPLRS, разработанной Raytheon. Ear Bible – это однонаушные наушники со встроенным проигрывателем Speex, оснащенные 1 ГБ флэш-памяти и предварительно загруженной записью Библии New American Standard. Программное обеспечение VIPA OS на базе Linux от ASL Safety & Security используется в системах оповещения и голосовой сигнализации на крупных международных транспортных узлах и железнодорожных сетях. Проект Rockbox использует Speex для своего голосового интерфейса и может воспроизводить файлы Speex на поддерживаемых проигрывателях, таких как Apple iPod или iRiver H10. Портативное устройство для сбора данных Vernier LabQuest, предназначенное для обучения наукам, использует Speex для голосовых аннотаций, создаваемых студентами и учителями с использованием встроенного или внешнего микрофона. Мобильное приложение Google для iPhone в настоящее время включает Speex. Предполагается, что новое приложение Google для голосового поиска на iPhone также использует Speex для передачи голоса на серверы Google для обработки. Adobe Flash Player поддерживает Speex, начиная с версии 10.0.12.36, выпущенной в октябре 2008 года. Из-за некоторых ошибок в Flash Player, первой рекомендуемой версией для поддержки Speex является 10.0.22.87 и более поздние. Speex в Flash Player может использоваться для обоих видов связи – через Flash Media Server или P2P. В отличие от Nellymoser audio, который был единственным речевым форматом в предыдущих версиях Flash Player, Speex может быть декодирован или преобразован в любой формат. Speex также может использоваться в формате контейнера Flash Video (.flv), начиная с версии 10 спецификации формата видеофайлов (опубликованной в ноябре 2008 года). Голосовой диктофон JavaSonics ListenUp использует Speex для сжатия голосовых сообщений, которые записываются в браузере и затем загружаются на веб-сервер. Основные области применения – обучение языкам, транскрипция и социальные сети. Speex используется в качестве алгоритма сжатия голоса в голосовом помощнике Siri на iPhone 4S. Поскольку преобразование текста в речь происходит на серверах Apple, кодек Speex используется для минимизации пропускной способности сети.