Speex -
Speex

Från Wikipedia, den fria encyklopedin
Speex -logotyp 2006.svg
Filnamnstillägg
.spx
Internetmedietyp
ljud/x-speex, ljud/speex, ljud/ogg
Utvecklad av Xiph.Org Foundation , Jean-Marc Valin
Typ av format Audio
Innehållet av Ogg
Standard RFC 5574
Ja
Hemsida
libspeex
Utvecklare Xiph.Org Foundation , Jean-Marc Valin
Initial release 1.0 / mars 2003
Stabil frisättning
1.2.0 / 7 december 2016
; 4 år sedan
 (
2016-12-07
)
Operativ system Plattformsoberoende
Typ Ljudkod , referensimplementering
Licens BSD-licens
Hemsida Xiph.org nedladdningar
-behållarformatet.

Speex-designers ser sitt projekt som ett komplement till Vorbis allmänna ljudkomprimeringsprojekt .

Speex är ett förlustformat , det vill säga kvaliteten försämras permanent för att minska filstorleken.

Speex -projektet skapades den 13 februari 2002. De första utvecklingsversionerna av Speex släpptes under LGPL -licens, men från version 1.0 beta 1 släpps Speex under Xiphs version av (reviderad) BSD -licens. Speex 1.0 tillkännagavs den 24 mars 2003, efter ett års utveckling. Den senaste stabila versionen av Speex -kodare och avkodare är 1.2.0.

Xiph.Org anser nu att Speex är föråldrat; dess efterträdare är den mer moderna Opus -codecen, som använder SILK -formatet under licens från Microsoft och överträffar sin prestanda på de flesta områden utom vid de lägsta samplingsfrekvenserna.

Beskrivning

Speex är inriktat på voice over IP (VoIP) och filbaserad komprimering. Designmålen har varit att göra en codec som skulle optimeras för högkvalitativt tal och låg bithastighet. För att uppnå detta använder codec flera bithastigheter och stöder ultrabredband (32  kHz samplingshastighet ), bredband (16 kHz samplingshastighet) och smalband (telefonkvalitet, 8 kHz samplingshastighet). Eftersom Speex har utformats för VoIP istället för mobiltelefonanvändning måste codec vara robust mot förlorade paket, men inte mot skadade paket. Allt detta ledde till valet av kod exciterad linjär förutsägelse (CELP) som kodningsteknik för Speex. En av huvudorsakerna är att CELP länge har bevisat att det kan göra jobbet och skala bra till både låga bithastigheter (vilket framgår av DoD CELP @ 4,8 kbit/s) och höga bithastigheter (som med G.728 @ 16 kbit) /s). De viktigaste egenskaperna kan sammanfattas enligt följande:

Funktioner

Samplingshastighet
Speex är huvudsakligen utformat för tre olika samplingshastigheter: 8 kHz (samma samplingshastighet för att överföra telefonsamtal ), 16 kHz och 32 kHz. Dessa kallas för smalband, bredband och ultrabredband.
Kvalitet
Speex-kodning styrs oftast av en kvalitetsparameter som sträcker sig från 0 till 10. Vid konstant bithastighet (CBR) är kvalitetsparametern ett heltal , medan för variabel bithastighet (VBR) är parametern ett verkligt ( flytande ) nummer.
Komplexitet (variabel)
Med Speex är det möjligt att variera komplexiteten som tillåts för kodaren. Detta görs genom att styra hur sökningen utförs med ett heltal i intervallet från 1 till 10 på ett sätt som liknar det -1 till -9 optioner till GZIP komprimerings verktyg. För normal användning är ljudnivån vid komplexitet 1 mellan 1 och 2 dB högre än vid komplexitet 10, men CPU- kraven för komplexitet 10 är ungefär fem gånger högre än för komplexitet 1. I praktiken är den bästa avvägningen mellan komplexitet 2 och 4, även om högre inställningar ofta är användbara när kodning av icke-tal låter som DTMF- toner, eller om kodning inte sker i realtid.
Variabel bithastighet (VBR)
Variabel bithastighet (VBR) gör att en codec kan ändra sin bithastighet dynamiskt för att anpassa sig till "svårigheten" för ljudet som kodas. I exemplet i Speex, låter som vokaler och högenergetiska transienter kräver en högre bithastighet för att uppnå god kvalitet, medan frikativor (t.ex. s och f ljud) kan kodas på lämpligt sätt med färre bitar. Av denna anledning kan VBR uppnå lägre bithastighet för samma kvalitet, eller en bättre kvalitet för en viss bithastighet. Trots sina fördelar har VBR tre huvudsakliga nackdelar: För det första, genom att bara ange kvalitet, finns det ingen garanti för den slutliga genomsnittliga bithastigheten. För det andra, för vissa realtidsapplikationer som röst över IP (VoIP), räknas den maximala bithastigheten, som måste vara tillräckligt låg för kommunikationskanalen. För det tredje kan kryptering av VBR-kodat tal inte garantera fullständig integritet, eftersom fraser fortfarande kan identifieras, åtminstone i en kontrollerad inställning med en liten ordlista med fraser, genom att analysera variationen i bithastigheten.
Genomsnittlig bithastighet (ABR)
Genomsnittlig bithastighet löser ett av problemen med VBR, eftersom den dynamiskt justerar VBR-kvaliteten för att uppfylla en specifik målbithastighet. Eftersom kvaliteten/bithastigheten justeras i realtid (öppen loop) kommer den globala kvaliteten att vara något lägre än den som uppnås genom kodning i VBR med exakt rätt kvalitetsinställning för att uppfylla målgenomsnittlig bithastighet.
Röstaktivitetsdetektering (VAD)
När den är aktiverad upptäcker röstaktivitetsdetektering om ljudet som kodas är tal eller tystnad/bakgrundsbrus. VAD aktiveras alltid implicit vid kodning i VBR, så alternativet är bara användbart vid icke-VBR-drift. I det här fallet upptäcker Speex perioder utan tal och kodar dem med lagom stora bitar för att reproducera bakgrundsbruset. Detta kallas " comfort noise generation" (CNG). Senaste versionen VAD fungerade bra är 1.1.12, sedan v 1.2 har den ersatts med enkel Any Activity Detection.
Diskontinuerlig överföring (DTX)
Diskontinuerlig överföring är ett tillägg till VAD/VBR -drift som gör det möjligt att sluta sända helt när bakgrundsbruset är stillastående. I en fil används 5 bitar för varje ram som saknas (motsvarande 250 bit/s).
Perceptuell förbättring
Perceptuell förbättring är en del av avkodaren som, när den slås på, försöker minska (uppfattningen av) bruset som produceras av kodnings-/avkodningsprocessen. I de flesta fall gör perceptuell förbättring ljudet längre från originalet objektivt (signal-brusförhållande), men i slutändan låter det fortfarande bättre (subjektiv förbättring).
Algoritmisk fördröjning
Varje codec introducerar en fördröjning i överföringen. För Speex är denna fördröjning lika med bildstorleken, plus en viss "blick framåt" som krävs för att bearbeta varje bildruta. Vid smalbandsdrift (8 kHz) är fördröjningen 30 ms, medan för bredband (16 kHz) är fördröjningen 34 ms. Dessa värden tar inte hänsyn till den CPU -tid det tar att koda eller avkoda ramarna.

Ansökningar

Jämförelse av ljudkodek för tal.

Det finns en stor mängd applikationer som stöder Speex -codec. Exempel inkluderar:

De flesta av dessa är baserade på DirectShow -filtret eller OpenACM -codec (t.ex. Microsoft NetMeeting ) på Microsoft Windows , eller Xiph.orgs referensimplementering, libvorbis, på Linux (t.ex. Ekiga ). Det finns också plugins för många ljudspelare. Se plugin- och programvarusidan på speex.org -webbplatsen för mer information.

Medietypen för Speex är ljud/ogg medan den ingår av Ogg och ljud/speex (tidigare ljud/x-speex) när den transporteras via RTP eller utan behållare.

Den United States Army 's Land Warrior -system, designad av General Dynamics , använder också Speex för VoIP på en EPLRS radio designad av Raytheon .

The Ear Bible är en enda-hörlur med en inbyggd Speex-spelare med 1 GB flashminne, förinstallerad med inspelning av New American Standard Bible .

ASL Safety & Security Linux-baserade VIPA OS programvara som används i lång rad högtalaranläggningar och röst larmsystem vid stora internationella lufttransportknutpunkter och järnvägsnät.

Den Rockbox Projektet använder Speex för sin röst gränssnitt. Den kan också spela Speex -filer på spelare som stöds, till exempel Apple iPod eller iRiver H10.

Vernier LabQuest handhållen datainsamlingsenhet för vetenskaplig utbildning använder Speex för röstkommentarer som skapats av studenter och lärare med antingen den inbyggda eller en extern mikrofon.

Google Mobile App för iPhone innehåller för närvarande Speex. Det har också föreslagits att den nya Google röstsökning iPhone -appen använder Speex för att överföra röst till Googles servrar för tolkning.

Adobe Flash Player stöder Speex som börjar med Flash Player 10.0.12.36, som släpptes i oktober 2008. På grund av vissa buggar i Flash Player är den första rekommenderade versionen för Speex -stöd 10.0.22.87 och senare. Speex i Flash Player kan användas för både kommunikation, via Flash Media Server eller P2P . Speex kan avkodas eller konverteras till valfritt format till skillnad från Nellymoser -ljud, som var det enda talformatet i tidigare versioner av Flash Player. Speex kan också användas i Flash Video -behållarformat (.flv), från och med version 10 av specifikationen för videofilformat (publicerad i november 2008).

JavaSonics ListenUp -röstinspelaren använder Speex för att komprimera röstmeddelanden som spelas in i en webbläsare och sedan laddas upp till en webbserver. Primära tillämpningar är språkträning, transkription och sociala nätverk.

Speex används som röstkomprimeringsalgoritm i Siri rösthjälp på iPhone 4S . Eftersom text-till-tal förekommer på Apples servrar används Speex-codec för att minimera nätverksbandbredd.

Se även

Källor

Denna artikel använder material från Speex Codec Manual som är upphovsrättsligt © Jean-Marc Valin och licensierat enligt villkoren i GFDL .

Referenser