Speex - Speex

Speex
Speex logo 2006.svg
Filnavn forlengelse
.spx
Internett -medietype
lyd/x-speex, lyd/speex, lyd/ogg
Utviklet av Xiph.Org Foundation , Jean-Marc Valin
Type format Lyd
Inneholdt av Ogg
Standard RFC 5574
Åpent format ? Ja
Nettsted www .speex .org
libspeex
Utvikler (er) Xiph.Org Foundation , Jean-Marc Valin
Første utgivelse 1.0 / mars 2003
Stabil utgivelse
1.2.0 / 7. desember 2016 ; 4 år siden ( 2016-12-07 )
Operativsystem Kryssplattform
Type Lydkodek , referanseimplementering
Tillatelse BSD-stil lisens
Nettsted Nedlasting av Xiph.org

Speex er en lydkomprimeringskodek som er spesielt innstilt for gjengivelse av menneskelig tale og også en gratis programvare -talekodek som kan brukes på VoIP -applikasjoner og podcaster . Den er basert på CELP talekodingsalgoritmen. Speex hevder å være fri for eventuelle patentbegrensninger og er lisensiert under revidert (3-ledd) BSD-lisens . Den kan brukes med Ogg -beholderformatet eller overføres direkte over UDP / RTP . Det kan også brukes med FLV -beholderformatet.

Speex-designerne ser på prosjektet sitt som et komplement til Vorbis generelle lydkomprimeringsprosjekt .

Speex er et tapt format, det vil si at kvaliteten blir permanent degradert for å redusere filstørrelsen.

Speex -prosjektet ble opprettet 13. februar 2002. De første utviklingsversjonene av Speex ble utgitt under LGPL -lisens, men fra versjon 1.0 beta 1 er Speex utgitt under Xiphs versjon av (revidert) BSD -lisens. Speex 1.0 ble kunngjort 24. mars 2003, etter et års utvikling. Den siste stabile versjonen av Speex encoder and decoder er 1.2.0.

Xiph.Org anser nå Speex som foreldet; dens etterfølger er den mer moderne Opus -kodeken, som bruker SILK -formatet under lisens fra Microsoft og overgår ytelsen på de fleste områder, bortsett fra med de laveste samplingshastighetene.

Beskrivelse

Speex er rettet mot voice over IP (VoIP) og filbasert komprimering. Designmålene har vært å lage en kodek som ville være optimalisert for høykvalitets tale og lav bithastighet. For å oppnå dette bruker kodeken flere bithastigheter, og støtter ultrabredbånd (32  kHz samplingsfrekvens ), bredbånd (16 kHz samplingshastighet) og smalbånd (telefonkvalitet, 8 kHz samplingsfrekvens). Siden Speex ble designet for VoIP i stedet for mobiltelefonbruk, må kodeken være robust for tapte pakker, men ikke for ødelagte pakker. Alt dette førte til valg av kode -eksitert lineær prediksjon (CELP) som kodingsteknikk for Speex. En av hovedårsakene er at CELP lenge har bevist at det kan gjøre jobben og skalere godt til både lave bithastigheter (som det fremgår av DoD CELP @ 4.8 kbit/s) og høye bithastigheter (som med G.728 @ 16 kbit) /s). De viktigste egenskapene kan oppsummeres som følger:

Funksjoner

Prøvetakingshastighet
Speex er i hovedsak beregnet for tre ulike samplingsrater: 8 kHz (den samme samplingfrekvensen til sendertelefonsamtaler), 16 kHz og 32 kHz. Disse kalles henholdsvis smalbånd, bredbånd og ultrabredbånd.
Kvalitet
Speex-koding styres mesteparten av tiden av en kvalitetsparameter som varierer fra 0 til 10. I konstant bithastighet (CBR) -operasjon er kvalitetsparameteren et heltall , mens for variabel bithastighet (VBR) er parameteren et ekte ( flytende ) tall.
Kompleksitet (variabel)
Med Speex er det mulig å variere kompleksiteten som er tillatt for koderen. Dette gjøres ved å kontrollere hvordan søket utføres med et heltall fra 1 til 10 på en måte som ligner på alternativene -1 til -9 for gzip -komprimeringsverktøy . For normal bruk er støynivået ved kompleksitet 1 mellom 1 og 2 dB høyere enn ved kompleksitet 10, men CPU- kravene for kompleksitet 10 er omtrent fem ganger høyere enn for kompleksitet 1. I praksis er den beste avveiningen mellom kompleksitet 2 og 4, selv om høyere innstillinger ofte er nyttige når koding av ikke-tale høres ut som DTMF- toner, eller hvis koding ikke er i sanntid.
Variabel bithastighet (VBR)
Variabel bithastighet (VBR) gjør at en kodek kan endre bithastigheten dynamisk for å tilpasse seg "vanskeligheten" til lyden som kodes. I eksempelet på Speex, lyd som vokaler og høyenergi- transienter kreve en høyere bithastighet for å oppnå god kvalitet, mens frikative lyder (f.eks e og f lyder) kan være kodet tilstrekkelig med færre bits. Av denne grunn kan VBR oppnå lavere bithastighet for samme kvalitet, eller en bedre kvalitet for en bestemt bithastighet. Til tross for fordelene har VBR tre hovedulemper: For det første er det ingen garanti om den endelige gjennomsnittlige bithastigheten ved å spesifisere kvalitet. For det andre, for noen sanntidsapplikasjoner som voice over IP (VoIP) er det som teller maksimal bithastighet, som må være lav nok for kommunikasjonskanalen. For det tredje kan det hende at kryptering av VBR-kodet tale ikke garanterer fullstendig privatliv, ettersom fraser fremdeles kan identifiseres, i det minste i en kontrollert setting med en liten ordliste med setninger, ved å analysere variasjonen i bithastigheten.
Gjennomsnittlig bithastighet (ABR)
Gjennomsnittlig bithastighet løser et av problemene med VBR, ettersom den dynamisk justerer VBR-kvaliteten for å oppfylle en bestemt målbithastighet. Fordi kvaliteten/bithastigheten justeres i sanntid (åpen sløyfe), vil den globale kvaliteten være litt lavere enn den som oppnås ved koding i VBR med nøyaktig riktig kvalitetsinnstilling for å oppnå mål gjennomsnittlig bithastighet.
Stemmeaktivitetsdeteksjon (VAD)
Når aktivert, oppdager stemmeaktivitetsdeteksjon om lyden som blir kodet er tale eller stillhet/bakgrunnsstøy. VAD aktiveres alltid implisitt ved koding i VBR, så alternativet er bare nyttig i ikke-VBR-drift. I dette tilfellet oppdager Speex perioder uten tale og koder dem med akkurat nok biter til å gjengi bakgrunnsstøyen. Dette kalles " comfort noise generation" (CNG). Siste versjon VAD fungerte fint er 1.1.12, siden v 1.2 har den blitt erstattet med en enkel aktivitetsdeteksjon.
Diskontinuerlig overføring (DTX)
Diskontinuerlig overføring er et tillegg til VAD/VBR -drift som gjør det mulig å slutte å sende helt når bakgrunnsstøyen er stasjonær. I en fil brukes 5 biter for hver ramme som mangler (tilsvarer 250 bit/s).
Perceptuell forbedring
Perceptuell forbedring er en del av dekoderen som, når den slås på, prøver å redusere (oppfatningen av) støyen som produseres av kode-/dekodingsprosessen. I de fleste tilfeller gjør perceptuell forbedring lyden lenger fra originalen objektivt (signal-til-støy-forhold), men til slutt høres det fortsatt bedre ut (subjektiv forbedring).
Algoritmisk forsinkelse
Hver kodek introduserer en forsinkelse i overføringen. For Speex er denne forsinkelsen lik rammestørrelsen, pluss en viss mengde "se fremover" som kreves for å behandle hver ramme. I smalbåndsoperasjon (8 kHz) er forsinkelsen 30 ms, mens for bredbånd (16 kHz) er forsinkelsen 34 ms. Disse verdiene tar ikke hensyn til CPU -tiden det tar å kode eller dekode rammene.

applikasjoner

Sammenligning av lydkodeker for tale.

Det er et stort antall applikasjoner som støtter Speex -kodeken. Eksempler inkluderer:

De fleste av disse er basert på DirectShow -filteret eller OpenACM -kodeken (f.eks. Microsoft NetMeeting ) på Microsoft Windows , eller Xiph.orgs referanseimplementering, libvorbis, på Linux (f.eks. Ekiga ). Det er også plugins for mange lydspillere. Se plugin- og programvaresiden på speex.org -siden for mer informasjon.

Medietypen for Speex er lyd/ogg mens den er inneholdt av Ogg, og lyd/speex (tidligere lyd/x-speex) når den transporteres gjennom RTP eller uten container.

The United States Army 's Land Warrior system, utviklet av General Dynamics , bruker også Speex for VoIP på en EPLRS radio designet av Raytheon .

The Ear Bible er en hodetelefon med ett øre og en innebygd Speex-spiller med 1 GB flashminne, forhåndslastet med innspilling av New American Standard Bible .

ASL Safety & Securitys Linux -baserte VIPA OS -programvare som brukes i langlinjesystemer og talealarmsystemer ved store internasjonale lufttransportknutepunkter og jernbanenett.

Den Rockbox prosjektet bruker Speex for sin stemme grensesnitt. Den kan også spille Speex -filer på støttede spillere, for eksempel Apple iPod eller iRiver H10.

Vernier LabQuest håndholdt datainnsamlingsenhet for vitenskapelig utdanning bruker Speex for talekommentarer opprettet av studenter og lærere ved hjelp av enten den innebygde eller en ekstern mikrofon.

Google Mobile App for iPhone inneholder for øyeblikket Speex. Det har også blitt foreslått at den nye Google -talesøk -iPhone -appen bruker Speex til å overføre tale til Googles servere for tolkning.

Adobe Flash Player støtter Speex som starter med Flash Player 10.0.12.36, utgitt i oktober 2008. På grunn av noen feil i Flash Player er den første anbefalte versjonen for Speex -støtte 10.0.22.87 og nyere. Speex i Flash Player kan brukes til begge typer kommunikasjon, gjennom Flash Media Server eller P2P . Speex kan dekodes eller konverteres til et hvilket som helst format i motsetning til Nellymoser -lyd, som var det eneste taleformatet i tidligere versjoner av Flash Player. Speex kan også brukes i Flash Video -beholderformatet (.flv), som starter med versjon 10 av spesifikasjonen for videofilformat (publisert i november 2008).

JavaSonics ListenUp taleopptaker bruker Speex til å komprimere talemeldinger som er spilt inn i en nettleser og deretter lastet opp til en webserver. Primære applikasjoner er språktrening, transkripsjon og sosiale nettverk.

Speex brukes som stemmekomprimeringsalgoritme i Siri stemmehjelp på iPhone 4S . Siden tekst-til-tale forekommer på Apples servere, brukes Speex-kodeken for å minimere nettverksbåndbredde.

Se også

Kilder

Denne artikkelen bruker materiale fra Speex Codec Manual som er copyright © Jean-Marc Valin og lisensiert under vilkårene i GFDL .

Referanser

Eksterne linker