Кіріспе

Speex – адам сөйлеуін қайта жаңғыртуға арналған аудио қысылу кодегі, сондай-ақ IP дауыстық байланыс қолданбалары мен подкасттарда қолданылуы мүмкін ашық кодты бағдарламалық қамтамасыз ету. Ол кодты тікелей қоздыру арқылы сызықтық болжамды сөйлеуді кодтау алгоритміне негізделген. Оның жасаушылары Speex патенттік шектеулерден бос екенін және қайта қарастырылған (3-тармақты) BSD лицензиясымен лицензияланатынын мәлімдейді. Оны Ogg контейнер форматымен немесе тікелей UDP/RTP арқылы таратуға болады. Сондай-ақ FLV контейнер форматында да қолданылуы мүмкін. Speex жасаушылары өз жобаларын Vorbis жалпы мақсаттағы аудио қысылу жобасына толықтыру ретінде қарастырады. Speex – дерек жоғалтатын формат, яғни файл көлемін кішірету үшін сапасы қайтымсыз төмендейді. Speex жобасы 2002 жылдың 13 ақпанында құрылған. Speex-тің алғашқы даму нұсқалары LGPL лицензиясымен шығарылды, бірақ 1.0 бета 1 нұсқасынан бастап Speex Xiph-тің (қайта қарастырылған) BSD лицензиясының нұсқасымен шығарылды. Speex 1.0 бір жылдық дамудан кейін 2003 жылдың 24 наурызында жарияланды. Speex кодектеушісі мен декодерінің соңғы тұрақты нұсқасы 1.2.1.

Сипаттама

Speex IP арқылы дауыс беруге (VoIP) және файлдық сығылуға бағытталған. Дизайн мақсаттары – жоғары сапалы сөйлеуді және төмен бит жылдамдығын қамтамасыз ететін кодек жасау болды. Бұл мақсатқа жету үшін кодек бірнеше бит жылдамдықтарын қолданады және ультра кең жолақты (32 кГц үлгі алу жылдамдығы), кең жолақты (16 кГц үлгі алу жылдамдығы) және тар жолақты (телефон сапасы, 8 кГц үлгі алу жылдамдығы) қолдайды. Speex ұялы телефонға емес, VoIP үшін жасалғандықтан, кодек жоғалған пакеттерге төзімді болуы керек, бірақ бұзылған пакеттерге емес. Осының нәтижесінде Speex үшін кодты ынталандырылған сызықтық болжау (CELP) кодтау әдісі ретінде таңдау жасалды. Дегенмен, жоғары параметрлер DTMF тондары сияқты сөйлеу емес дыбыстарды кодтағанда немесе кодтау нақты уақытта орындалмағанда пайдалы болуы мүмкін. Өзгермелі бит жылдамдығы (VBR) Өзгермелі бит жылдамдығы (VBR) кодекке кодталатын аудионың "қиындығына" бейімделу үшін бит жылдамдығын динамикалық түрде өзгертуге мүмкіндік береді. Мысалы, Speex-те дауыстылар мен жоғары энергиялы импульстар жақсы сапаға жету үшін жоғары бит жылдамдығын қажет етеді, ал фрикативтер (мысалы, «с» және «ф» дыбыстары) азырақ битпен жеткілікті түрде кодталуы мүмкін. Осы себепті VBR бірдей сапада төменгі бит жылдамдығына немесе белгілі бір бит жылдамдығы үшін жақсырақ сапаға қол жеткізе алады. Артықшылықтарына қарамастан, VBR-дің үш негізгі кемшілігі бар: біріншіден, тек сапаны көрсету арқылы соңғы орташа бит жылдамдығына кепілдік берілмейді. Екіншіден, IP арқылы дауыс сияқты кейбір нақты уақыт қолданбалары үшін ең маңыздысы – максималды бит жылдамдығы, ол байланыс арнасы үшін жеткілікті төмен болуы керек. Үшіншіден, VBR кодталған сөйлеуді шифрлау толық құпиялылықты қамтамасыз етпеуі мүмкін, себебі фразаларды, кем дегенде шектеулі фразалық сөздікпен бақыланатын жағдайда, бит жылдамдығының өзгеру үлгісін талдау арқылы анықтауға болады. Орташа бит жылдамдығы (ABR) Орташа бит жылдамдығы VBR-дің бір мәселесін шешеді, өйткені ол белгілі бір мақсатты бит жылдамдығына жету үшін VBR сапасын динамикалық түрде реттейді. Сапа/бит жылдамдығы нақты уақытта (ашық циклда) реттелгендіктен, жалпы сапа мақсатты орташа бит жылдамдығына сәйкес келетін дәл сапа параметрінмен VBR-де кодтау арқылы алынғаннан сәл төмен болады. Дауыстық белсенділікті анықтау (VAD) Қосылған кезде, дауыстық белсенділікті анықтау кодталатын аудионың сөйлеу немесе үнсіздік/фондық шу екенін анықтайды. VAD әрқашан VBR-де кодтау кезінде автоматты түрде қосылады, сондықтан бұл опция VBR емес операцияларда ғана пайдалы. Бұл жағдайда Speex сөйлеуге қатысы жоқ кезеңдерді анықтайды және оларды фондық шуды қайта жаңғырту үшін жеткілікті биттермен кодтайды. Бұл «жайлы шуды жасау» (CNG) деп аталады. VAD-тің соңғы нұсқасы 1.1.12 жақсы жұмыс істеді, ал 1.2 нұсқасынан бастап ол кез келген белсенділікті анықтаумен ауыстырылды. Ұзындығы үздірілмейтін беру (DTX) Ұзындығы үздірілмейтін беру – VAD/VBR операциясына қосымша, ол фондық шу тоқтаған кезде беруді толығымен тоқтатуға мүмкіндік береді. Файлда әрбір жоғалған кадр үшін 5 бит қолданылады (250 бит/с-қа сәйкес). Қабылдауды жақсарту Қабылдауды жақсарту – декодердің бір бөлігі, ол қосылған кезде кодтау/декодтау процесінен туындаған шуды азайтуға тырысады. Көп жағдайда қабылдауды жақсарту дыбысты объективті түрде бастапқыдан (сигнал/шу қатынасы) алыстатады, бірақ соңында ол жақсырақ естіледі (субъективті жақсарту). Алгоритмдік кешігу Кез келген кодек беруде кешігуді тудырады. Speex үшін бұл кешігу кадр өлшеміне тең, сонымен қатар әрбір кадрды өңдеу үшін қажетті «алдын ала қарау» мөлшеріне тең. Тар жолақты (8 кГц) операцияда кешігу 30 мс, ал кең жолақты (16 кГц) операцияда кешігу 34 мс құрайды. Бұл мәндер кадрларды кодтау немесе декодтау үшін CPU уақытын ескермейді.

Қолданбалар

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