Введение
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 is an audio compression codec specifically tuned for the reproduction of human speech and also a free software speech codec that may be used on voice over IP applications and podcasts. It is based on the code excited linear prediction speech coding algorithm. Its creators claim Speex to be free of any patent restrictions and it is licensed under the revised (3 clause) BSD license. It may be used with the Ogg container format or directly transmitted over UDP/RTP. It may also be used with the FLV container format. The Speex designers see their project as complementary to the Vorbis general purpose audio compression project. Speex is a lossy format, i. e. quality is permanently degraded to reduce file size. The Speex project was created on February 13, 2002. The first development versions of Speex were released under LGPL license, but as of version 1.0 beta 1, Speex is released under Xiph's version of the (revised) BSD license. Speex 1.0 was announced on March 24, 2003, after a year of development. The last stable version of Speex encoder and decoder is 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 используется для минимизации пропускной способности сети.
Streaming applications like teleconference (e. g. TeamSpeak, Mumble)
VoIP systems (e. g. Asterisk)
Videogames (e. g. Xbox Live, Civilization 4, DropMix vocal tracks, )
Audio processing applications. Most of these are based on the DirectShow filter or OpenACM codec (e. g. Microsoft NetMeeting) on Microsoft Windows, or Xiph. org's reference implementation, libvorbis, on Linux (e. g. Ekiga). There are also plugins for many audio players. See the plugin and software page on the speex. org site for more details. The media type for Speex is audio/ogg while contained by Ogg, and audio/speex (previously audio/x speex) when transported through RTP or without container. The United States Army's Land Warrior system, designed by General Dynamics, also uses Speex for VoIP on an EPLRS radio designed by Raytheon. The Ear Bible is a single ear headphone with a built in Speex player with 1 GB of flash memory, preloaded with a recording of the New American Standard Bible. ASL Safety & Security's Linux based VIPA OS software which is used in long line public address systems and voice alarm systems at major international air transport hubs and rail networks. The Rockbox project uses Speex for its voice interface. It can also play Speex files on supported players, such as the Apple iPod or the iRiver H10. The Vernier LabQuest handheld data acquisition device for science education uses Speex for voice annotations created by students and teachers using either the built in or an external microphone. The Google Mobile App for iPhone currently incorporates Speex. It has also been suggested that the new Google voice search iPhone app is using Speex to transmit voice to Google servers for interpretation. Adobe Flash Player supports Speex starting with Flash Player 10.0.12.36, released in October 2008. Because of some bugs in Flash Player, the first recommended version for Speex support is 10.0.22.87 and later. Speex in Flash Player can be used for both kind of communication, through Flash Media Server or P2P. Speex can be decoded or converted to any format unlike Nellymoser audio, which was the only speech format in previous versions of Flash Player. Speex can be also used in the Flash Video container format (. flv), starting with version 10 of Video File Format Specification (published in November 2008). The JavaSonics ListenUp voice recorder uses Speex to compress voice messages that are recorded in a browser and then uploaded to a web server. Primary applications are language training, transcription and social networking. Speex is used as the voice compression algorithm in the Siri voice assistance on the iPhone 4S. Since text to speech occurs on Apple's servers, the Speex codec is used to minimize network bandwidth.