SE469764B - Saett att koda en samplad talsignalvektor - Google Patents

Saett att koda en samplad talsignalvektor

Info

Publication number
SE469764B
SE469764B SE9200217A SE9200217A SE469764B SE 469764 B SE469764 B SE 469764B SE 9200217 A SE9200217 A SE 9200217A SE 9200217 A SE9200217 A SE 9200217A SE 469764 B SE469764 B SE 469764B
Authority
SE
Sweden
Prior art keywords
delay
gain
vector
begin
real
Prior art date
Application number
SE9200217A
Other languages
English (en)
Other versions
SE9200217D0 (sv
SE9200217L (sv
Inventor
T B Minde
Original Assignee
Ericsson Telefon Ab L M
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to SE9200217A priority Critical patent/SE469764B/sv
Publication of SE9200217D0 publication Critical patent/SE9200217D0/sv
Priority to TW082100183A priority patent/TW227609B/zh
Priority to PCT/SE1993/000024 priority patent/WO1993015503A1/en
Priority to BR9303964A priority patent/BR9303964A/pt
Priority to EP93903357A priority patent/EP0577809B1/en
Priority to AU34651/93A priority patent/AU658053B2/en
Priority to ES93903357T priority patent/ES2110595T3/es
Priority to DE69314389T priority patent/DE69314389T2/de
Priority to CA002106390A priority patent/CA2106390A1/en
Priority to JP05513132A priority patent/JP3073017B2/ja
Priority to DK93903357.7T priority patent/DK0577809T3/da
Priority to MX9300401A priority patent/MX9300401A/es
Priority to US08/009,245 priority patent/US5553191A/en
Publication of SE9200217L publication Critical patent/SE9200217L/sv
Publication of SE469764B publication Critical patent/SE469764B/sv
Priority to FI934063A priority patent/FI934063A/fi
Priority to HK98102397A priority patent/HK1003346A1/xx

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0004Design or structure of the codebook
    • G10L2019/0005Multi-stage vector quantisation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0011Long term prediction filters, i.e. pitch estimation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

UI \Jl KJI M " ' ' 469 76g¿ 2 ring är dock ej alltid tillräcklig för làngtidsprediktorvektorn.
För att kunna följa förändringar i talsignalen, speciellt vid höga grundtonsfrekvenser (pitch), måste denna uppdateras snabbare än på ramnivà. Därför uppdateras denna ofta på subramnivå, varvid en subram exempelvis kan utgöras av 1/4 ram.
Det har visat sig att den slutna slinganalysen ger mycket goda prestanda för korta subramar, men att prestanda snabbt försämras vid längre subramar.
Den öppna slinganalysen har sämre prestanda än den slutna sling- analysen vid korta subramar, men bättre prestanda än den slutna slinganalysen vid långa subramar. Prestanda.vid långa subramar är jämförbara med men ej riktigt lika bra som för den slutna sling- analusen vid korta subramar.
Anledningen till att man önskar så långa subramar som möjligt, trots att korta subramar skulle följa förändringar bäst, är att korta subramar innebär en tätare uppdatering, vilket förutom den ökade komplexiteten innebär en högre bitfrekvens vid överföring av den kodade signalen.
Föreliggande uppfinning befattar sig sålunda.med problemet att nå högre prestanda för längre subramar. Detta.problem innefattar val av kodarstruktur och analysmetod för erhållande av prestanda jäm- förbara med sluten slinganalys för korta subramar.
En metod att öka prestanda är att göra en fullständig sökning över alla.kombinationer av 1ángtidsprediktorvektorer och vektorer ur den fasta kodboken. Detta skulle ge den kombination som bäst passar till talsignalvektorn för varje given subram. Dock skulle den härigenom uppkomna komplexiteten vara omöjlig att implemente- ra med hjälp av dagens digitala signalprocessorer.
REnoGöRELsE FÖR UPPFINNINGEN Ett syftemàl för föreliggande uppfinning är därför erbjudande av ett sätt att mera optimalt koda en samplad talsignalvektor även vid längre subramar utan att komplexiteten ökar väsentligt. 10 15 20 25 Detta (a) (b) (C) flH1:w~ II 3 fi s9 764 syftemål löses enligt uppfinningen genom att ett första estimat på långtidsprediktorvektorn bil- das i en öppen slinganalys; att ett andra estimat på làngtidsprediktorvektorn bildas i en sluten slinganalys; och att det första och det andra estimatet vart och ett i en uttömmande sökning linjärt kombineras med alla kodvekto- rerna i den fasta kodboken för bildande av den excita- tionsvektor som ger den bästa kodningen av talsignalvek- torn.
FIGURFÖRTECKNING Uppfinningen, ytterligare syften samt med uppfinningen uppnådda fördelar förstås bäst genom hänvisning till nedanstående beskriv- ning och den bifogade ritningen, i vilken: Fig.
Fig.
Fig.
Fig. visar strukturen av en känd talkodare med sluten sling- analys; visar strukturen av en annan känd talkodare med sluten slinganalys; visar en känd struktur för öppen slinganalys i en talkodare; och visar en föredragen struktur för en talkodare för utförande av förfarandet enligt uppfinningen.
FÖREDRAGEN UTFÖRINGSFQRM I ritningens olika figurer har samma hänvisningsbeteckningar genomgående använts för motsvarande element. 10 15 20 25 30 35 4692-01764 4 Figur l visar strukturen av en känd talkodare med sluten sling- analys. Kodaren innehåller en syntesdel till vänster om den ver- tikala streckade mittlinjen. Denna syntesdel består väsentligen av tre delar, nämligen en adaptiv kodbok 10, en fast kodbok 12 och ett LPC-syntesfilter 16. En vald vektor fràn den adaptiva kodboken 10 multipliceras med en förstärkningsfaktor gi för bil- dande av en signal p(n). På samma sätt multipliceras en vektor ¿flÅu från den fasta kodboken med en förstärkningsfaktor g,för bildan- de av en signal f(n). Signalerna p(n) och f(n) summeras i en adderare 14 för bildande av en excitationsvektor ex(n), vilken exciterar syntesfiltret 16 för bildande av en estimerad talsig- nalvektor s(n).
Den estimerade vektorn subtraheras från den verkliga talsignal- vektorn s(n) i en adderare 20 i den högra delen av figur l, ana- lysdelen, för bildande av en felsignal e(n). Denna felsignal leds genom ett viktningsfilter 22 för bildande av en viktad felsignal ev(n). Komponenterna i denna viktade felvektor kvadreras och sum- meras i en enhet 24 för bildande av ett mått på energin i den viktade felvektorn.
Syftet är nu att minimera denna energi, dvs. att välja den kombi- nation av vektor ur den adaptiva kodboken 10 och den förstärkning gl och den vektor ur den fasta kodboken 12 och den förstärkning g, som ger det minsta energivärdet, dvs. som efter filtrering i filtret 16 bäst approximerar talsignalvektorn s(n). Denna optime- ring delas upp i två steg. I det första steget antages f(n) = 0 och bestäms den bästa vektorn ur den adaptiva kodboken 10 samt gl. När dessa parametrar fastlagts bestäms sedan den vektor och den förstärkningsfaktor g, som tillsammans med de nyss valda parametrarna minimerar energin (kallas ibland "one at a time" method).
Bästa index I i den adaptiva kodboken 10 och förstärkningen gl beräknas med hjälp av följande formler: p(n) Excitationsvektor (f(n) = 0) Skalad adaptiv kodbokvektor Syntetiskt tal (* = faltning) ex(n) p(n) s(n) gi'ai(n) h(n)*p(n) 10 15 20 25 30 fi l” " fihu 2169 764 :Wi UI e(n) = s(n) - š(n) Felvektor e"(n) = w(n)*(s(n) - š(n)) Viktat fel E = 2[e_,(n)]2 n=o..N-1 Kveareret vikten fei N = 40 (t ex) Vektorlängd s¿n) = w(n)*s(n) Viktat tal 1n(n) = w(n)*h(n) Viktat impulssvar för syntes- filter N-l min El. = min 2 [ewíurnlz sök optimalt index i den adep- M tive kodbeken N-l aEi _ sym) -al-(n) *h,,(n) “ 0 ='9i= Nü Förstärkning för index i 89; 2 [šwíhzfiz n=0 Filterparametrarna i filtret 16 uppdateras för varje talsignalram genom analys av talsignalramen i en LPC-analysator 18. Uppdate- ringen har markerats med den streckade förbindelsen mellan analy- satorn 18 och filtret 16. På samma sätt finns en streckad linje mellan enheten 24 och en fördröjningslänk 26. Denna förbindelse symboliserar en uppdatering av den adaptiva kodboken 10 med den slutligen valda excitationsvektorn ex(n).
Figur 2 visar strukturen av en annan känd talkodare med sluten slinganalys. Den högra analysdelen i figur 2 är identisk med ana- lysdelen i figur 1. Däremot skiljer sig syntesdelen genom att den adaptiva kodboken 10 och förstärkningselementet gzersatts med en återkopplingsslinga innehållande ett filter bestående av en för- dröjning 28 och ett förstärkningselement gL. Eftersom den adap- tiva kodbokens vektorer utgörs av vektorer som är inbördes för- skjutna ett sampel, dvs. som endast skiljer sig i den första och den sista komponenten, kan man visa att filterstrukturen i figur 2 är ekvivalent med den adaptive kodboken i figur 1 så länge som fördröjningen L ej underskrider vektorlängden N.
För en fördröjning (lag) L mindre än vektorlängden N erhålls för den adaptiva kodboken i figur l: Långtidsminne (adaptiv kodbok) v3(n) n=-Maxlag...-1 10 15 20 25 :fl [m] 'I V(n) = mi; (n) Extraktion av vektor v(n) = v(n-L) n=LmNß1 Cyklisk upprepning dvs den adaptiva kodboksvektorn,'som har längden N, bildas genom cyklisk upprepning av komponenterna O...L-1. Vidare gäller: n=O...N-1 n-:Oo o cN-l gfvÜï) P(n) + f(n) mn) ex(n) där excitationsvektorn ex(n) bildas genom en linjär kombination av den adaptiva kodboksvektorn och den fasta kodboksvektorn.
För en fördröjning (lag) L mindre än vektorlängden N gäller vid filterstrukturen i figur 2: v(n) = g¿-v(n-L) + f(n) n=0...L-1 v-(n) = gJ-vul-zr.) + gL-ful-L) + fm) n=L...N-1 ex(n) = v(n) dvs, excitationsvektorn ex(n) bildas genom filtrering av den fasta kodboksvektorn genom filterstrukturen g¿, 28.
Både strukturen i figur 1 och i figur 2 baseras på en jämförelse av den faktiska signalvektor s(n) med en uppskattad signalvektor š(n) och minimering av det viktade kvadratiska felet vid beräk- ning av làngtidsprediktorvektorn.
Ett annat sätt att uppskatta làngtidsprediktorvektorn är att jäm- föra den faktiska talsignalvektorn s(n) med tidsfördröjda versio- ner av denna (öppen slinganalys) för att upptäcka eventuell periodicitet, nedan kallad fördröjning (pitch lag). Ett exempel på en analysdel i en sådan struktur visas i figur 3. Talsignalen s(n) viktas i ett filter 22, och filtrets 22 utsignal sw(n) leds dels direkt, dels via en fördröjningsslinga innehållande ett för- dröjningsfilter 30 och en förstärkningsfaktor g¿'till en summera- re 32, som bildar skillnaden mellan den viktade signalen och den 10 15 2.0 25 v- v- - 7 :I 1469 764 fördröjda signalen. Skillnadssignalen e,,(n) leds sedan till en enhet 24 som kvadrerar och suznmerar komponenterna.
Optimal fördröjning L och förstärkning gL beräknas enligt: e,,,(n) = s,,(n) - gl-swm-l) Viktad felvektor E = Z[e,,(n)]2 n=o..N-1 Kvnarerat viktat fel N-l min El = min 2 [s,,(n) -g1-s,,(n-l)]2 sök optimal fördröjning 1 n=O N-l aEl _ _ ,,,(n)~s,,(n-1) 5-51- ~ 0 =' 91 - m Förstärkning för fördröj- 2 [sw-(fklnz ning l' n=0 Den slutna slinganalysen vid filterstrukturen enligt figur 2 skiljer sig från den beskrivna slutna slinganalysen för den adaptiva kodboken enligt figur l i det fall att fördröjningen L är mindre än vektorlängden N.
För den adaptiva kodboken erhölls förstärkningsfaktorn genom lösning av en förstagradsekvation. För filterstrukturen erhålls förstärkningsfaktorn genom lösning av ekvationer med högre ord- ningstal (P. Kabal, J. Moncet, C. Chu "Synthesis filter optimiza- tion and coding: Application to CELP“,IEE ICASSP-BB, New York, 1988).
För en fördröjning i intervallet N/2 ekvationen: ( ) _ gLv(n-L) n=0...L-l ex n _ gâvhz-ZL) n=L...N-1 för excitationen ex(n) i figur 2. Denna excitation filtreras sedan genom syntesfiltret 16, som ger en syntetisk signal uppdelad i följande termer: š(n) = šL(n) = gL'h(n)*v(n-L) n=0...L-1 š(n) = š,_(n) + š2,_(n) n=L...N-1 š2,_(n) = gL2-h(n)*v(n-2L) n=L...N-1 1 I 1 \ âfl m! ' * 4692764 8 Det kvadrerade viktade felet kan skrivas som: N-1 n=0 Här är ewL(n) definierat enligt: ew,_(n) = [s,,,(n) - š,,(n)] Viktad felvektor 5 s,,(n) = w(n)*s(n) Viktat tal š,,(n) = h,_,(n)*š(n) Viktad syntetisk signal h,,(n) = w(n)*h(n) Viktat impulssvar för syntes- filter Optimal fördröjning (lag) L erhålls enligt: N-i min EL = min E [ewL(n) 12 n=0 lO Det kvadrerade viktade felet kan nu utvecklas enligt: N-l N-l EL = 2 |s,,(n) 12 - 29-52 s,_,(n)š,_,L(n) n=0 n=0 zN-l N-l + gLE |§WLP - zgåE sym) §,,2L(n> n=0 n=L SN-l 4N-1 + zgr-E šwrfn) šnærm) '*' 91.2 lšwzz, (n) lg n=L n=L Vilkoret å' : 0 âgL leder till en tredjegradsekvation i förstärkningen gL.
För att minska komplexiteten i denna sökstrategi kan en metod (P.
Kabal, J. Moncet, C. Chu "Synthesis filter optimization and 15 coding: Application to CELP“,IEE ICASSP-88, New York, 1988) med kvantisering i den slutna slinganalysen användas. I denna metod används de kvantiserade förstärkningsfaktorerna för evaluering av det kvadratiska felet. Metoden kan för varje fördröjning i sökningen sammanfattas på följande sätt: Först beräknas alla 20 summatermer i det kvadratiska felet. Sedan prövas alla kvantise- ringsvärden för g,_ i ekvationen för EL. Slutligen väljs det värde 10 15 20 25 30 9 -f i4e9 764 på gL som ger det minsta kvadratiska felet. För ett litet antal kvantiseringsvärden, i typfallet 8-16 värden motsvarande 3-4 bitars kvantisering, ger denna metod en betydligt lägre komplexi- IfN i, f. [-1 - tet än att försöka lösa ekvationerna i sluten form.
Såsom syntesdel till analysstrukturen i figur 3 kan, i en före- dragen utföringsform av uppfinningen, användas den vänstra delen, syntesdelen av strukturen enligt figur 2. Detta har utnyttjats vid föreliggande uppfinning för åstadkommande av en struktur i enlighet med figur 4.
Den vänstra delen av figur 4, syntesdelen, är identisk med syn- tesdelen i figur 2. I den högra delen av figur 4, analysdelen, har den högra delen av figur 2 kombinerats med strukturen i figur 3.
Vid förfarandet enligt uppfinningen bestäms först ett estimat på långtidsprediktorvektorn dels med en sluten slinganalys, dels med en öppen slinganalys. Eftersom dessa båda estimat ej är direkt jämförbara (det ena estimatet jämför den faktiska signalen med en uppskattad signal, medan det andra estimatet jämför den faktiska signalen med en fördröjd version av denna). För slutlig bestäm- ning av kodningsparametrar utförs därför en uttömmande sökning av den fasta kodboken 12 för vart och ett av dessa estimat. Resulta- ten av dessa sökningar är nu direkt jämförbara, eftersom i båda fallen den faktiska talsignalen jämförts med en uppskattad sig- nal. Kodningen baseras nu på det estimat som gav det bästa resul- tatet, dvs. det minsta viktade kvadratiska felet.
I figur 4 har två schematiska omkopplare 34 och 36 inritats för att illustrera detta förlopp.
I en första beräkningsfas öppnas omkopplaren 36 för anslutning till “jord" (nollsignal), så att endast den faktiska talsignalen s(n) når viktningsfiltret 22. Samtidigt sluts omkopplaren 34, så att en öppen slinganalys kan genomföras. Efter den öppna sling- analysen öppnas omkopplaren 34 för anslutning till "jord" och stängs omkopplaren 36, så att en sluten slinganalys kan utföras på samma sätt som vid strukturen enligt figur 2. lO 15 20 25 46%-764 1° Slutligen genomsöks den fasta kodboken 12 för vart och ett av de erhållna estimaten (ställs in via filtret 28 och förstärknings- faktorn gL). Den kombination av vektor i den fasta kodboken, för- stärkningsfaktor g, samt estimat på långtidsprediktorn som gav det bästa resultatet bestämmer kodningsparametrarna.
Av ovanstående inses att en måttligt ökad komplexitet (dubbel estimering av làngtidsprediktorvektorn och dubbel genomsökning av den fasta kodboken) ger möjlighet att utnyttja de bästa egenska- perna hos den öppna och den slutna slinganalysen för förbättring av prestanda vid långa subramar.
För att ytterligare förbättra lángtidsprediktorns prestanda kan en làngtidsprediktor av högre ordning (R. Ramachandran, P. Kabal "Pitch prediction filters in speech ooding", IEEE Trans. ASSP Vol. 37, No. 4, April 1989; P. Kabal, J. Moncet, C. Chu “Synthe- sis filter optimization and coding: Application to CELP",IEE ICASSP-88, New York, 1988) eller en högupplösande långtids- prediktor (P. Kroon, B. Atal, "On the use of pitch prediotors with high temporal resolution", IEEE trans. SP. Vol. 39, Nr 3, mars 1991) användas.
En generell form för en làngtidsprediktor av ordning p ges av: p-1 Pm = 1-2 g(k) z-ßfflfl k=o där M är fördröjningen och g(k) är prediktorkoefficienterna.
För en högupplösande prediktor kan fördröjningen antaga värden med högre upplösning, dvs icke heltaliga värden. Med interpola- tionsfilter pl(k) (polyfasfilter) extraherade från ett lågpass- filter erhålls: plfk) = h(k°D-l) l=O...D-l, k=O...q-1 där 1 : numrerar de olika interpolationsfiltren, vilka svarar mot olika fraktioner av upplösningen, 10 15 20 25 30 v' i' 11 4ë§ 764 fl | i, '.
D = upplösningsgraden, dvs D°fs ger den samplingstakt som interpolationsfiltren beskriver, q = antalet filterkoefficienter i interpolationsfiltret.
Med dessa filter erhålls en effektiv icke heltalig fördröjning på M + l/D. Långtidsprediktorns form är då given av: q-l P(z) = 1-92p1(k)z'”*'”*) k=0 där g är lågpassfiltrets filterkoefficient och I är lågpass- filtrets fördröjning. För denna làngtidsprediktor sänds ett kvantiserat g och en icke heltalig fördröjning M + l/D på kanalen .
Föreliggande uppfinning innebär att två estimat på långtids- prediktorvektorn bildas, ett i en öppen slinganalys och ett annat i en sluten slinganalys. Därför vore det önskvärt att minska komplexiteten i dessa estimatbestämningar. Eftersom den slutna slinganalysen är mera komplex än den öppna slinganalysen baseras en föredragen utföringsform av uppfinningen på att estimatet från den öppna slinganalysen även utnyttjas för den slutna slinganaly- sen. Vid den slutna slinganalysen sker sökningen enligt det föredragna förfarandet endast i ett område kring den fördröjning L som erhölls i den öppna slinganalysen eller i områden kring multipler eller submultipler av denna. Härigenom kan komplexite- ten minskas eftersom en fullständig sökning ej genomförs i den slutna slinganalysen.
Ytterligare detalj er av uppfinningen framgår av bifogade appendix innehållande ett PASCAL-program som simulerar förfarandet enligt uppfinningen .
Fackmannen inser att olika förändringar och modifieringar av upp- finningen är möjliga utan att dessa faller utanför uppfinningens ram, vilken definieras av de bifogade patentkraven. Exempelvis är det även möjligt att kombinera den högra delen av figur 4, ana- lysdelen, med den vänstra delen i figur l, syntesdelen. I en sådan utföringsform lagras de båda estimaten på långtidspredik- 4692764 12 torvektorn i tur och ordning i den adaptiva kodboken under genom- sökningen av den fasta kodboken. Efter avslutad genomsökning av den fasta kodboken för vart och ett av etimaten skrivs slutligen den sammansatta vektor som ger den bästa kodningen in i den adap- | n lf! tiva kodboken.
'\|| L! 13 rf469 764 APPENDIX { DEFINITIONS } { Program definition } program Transmitter(input,output) ; {--} { Constant definitions } const trunclength = 20; { length for synthesis filters } number_of_frames = 2000; {--} { Type definitions } type SF_Type = ARRAY[O..79] of real ; { Subframes } CF_Type = ARRAY[0..lO] of real ; { Filter coeffs } FS_Type = ARRAY[0..10] of real ; { Filter states } Win;Type = ARRAY[0..379] of real; { Input frames } hist_type = ARRAY[-160..-1] of real; { ltp memory } histSF_type = ARRAY[-l60..79] of real; { ltp memory+sub } delay_type = ARRAY[20..147] of real; { error vectors } out_type = ARRAY[l..26] OF integer; { output frames } {--} { Variable definitions } { General variables } var i, k : integer ; {---} { Segmentation variables } frame_nr, subframe_nr : integer ; { frame counters } Speechlnbuf : win_type; { speech input frame } 4692764 14 Code0utbuf : out_type; { code output frame } {---} { Filter Memorys } FS_zero_state : FS_type; { zeroed filter state FS_analys : FS_type; { Analysis filter state FS_temp : FS_type; { Temporary filter state FS_Wsyntes : FS_type; { synthesis filter state FS_ringing : FS_type; { saved filter state {---} { Signal Subframes } Zero_subframe : SF_type; { zeroed subframe Original_Speech : SF_type; { Input speech Original_WSpeech : SF_type; { Input weighted speech 0riginal_Residue : SF_type; { After LPC analys filter Weighted_excitation : SF_type; { Weighted synthesis excit Weighted_speechl : SF_type; { After weighted synthes Weighted_speech2 : SF_type; { After weighted synthes Ringing : SF_type; { filter ringing Predictionl : SF_type; { pitch prediction model Prediction2 : SF_type; { pitch prediction mode2 Prediction : SF_type; { prediction from LTP Prediction_Syntes : SF_type; { Weighted synth from LTP Excitationl : SF_type; { excitation model Excitation2 : SF_type; { excitation mode2 Excitation : SF_type; { Exc from LTP and CB Weighted_Speech : histSF_type; { weighted synthes memory {---} { Short term prediction varaibles } A_Coeff : CF_type: { A coef of synth filter } A_Coeffnew : CF_type; { A coef of new synth filter } A_Coeffold : CF_type; { A coef of old synth filter } A_W_Coeff : CF_type; { A coef of weigth synt } H_W;syntes : SF_type: { Trunc impulse response } {---} { LTP and Codebook decision variables } wwwwwwwwwwwwwwww www-www 15 rfH ',' :ïfd-4e9 764 power : real ; { Power of tested vector corr : real ; { Corr vector vs signal best_power1 : real ; { Power of best vector so far best_corrl : real ; { Corr of best vector so far best_power2 : real ; { Power of best vector so far best_corr2 : real ; { Corr of best vector so far in_power : real ; { Power of signal best_errorl : real ; { total error model best_error2 : real ; { total error mode2 mode : integer; { mode decision --- } { LTP variables } delay : integer ; { Delay of this vector upper : integer ; { Highest delay of subframe lower : integer ; { Lowest delay of subframe PP_gainl : real ; { gain of this vect model PP_gain2 : real ; { gain of this vect mode2 PP_delay : integer ; { Best delay in total search PP_gain_code : integer ; { Coded gain of best vector PP_best_error : real ; { Best error oriterion search gain : real ; { gain of this vect gain_code : integer ; { Coded gain of this vector PP_gain_codel : integer ; { Coded gain model PP_gain_code2 : integer ; { Coded gain mode2 PP_delayl : integer ; { best delay model PP_delay2 : integer ; { best delay mode2 PP_history : hist_type; { LTP memory PP_Qverlap : SF_type; { ltp synthesis repetition Openpower : delay_type;{ vector of power Opencorrelation : delay_type;{ vector of correlations { --- } { Codebook variables } Mf-JHJMH \~J\vJ\-f-"~vJ ehv-'hv-Jkfluaag; w-flw-Iw-fw-f w-I-vfwlwfl w-Jw-I læei 764 .an- F' O\ CB_gain_code : integer; { Gain c for best vector } CB_index : integer; { Index for best vector } CB_gainl : real; { Gain for best vector model } CB_gain_codel : integer; { Gain code for best vector model} CB_indexl : integer; { Index for best vector model } CB_gain2 : real; { Gain for best vector mode2 } CB_gain_code2 : integer; { Gain code for best vector mode2} CB_index2 : integer; { Index for best vector mode2 } < --- } {--} { Table definitions } { Tables for the LTP } { Convert PP_gain;code4 to gain } TB_PP_gain : ARRAY[O..l5] OF real; { Initialized by program } { ---- } { Convert Gain to PP_gain_code4 } TB_PP_gain;border : ARRAY[O..l5] of real ; { Initialized by program } Procedure definitions } { LPC analysis } { Initializations } procedure Initializations; extern; { ---- } { Getframe } procedure getframe(var inbuf : win_type); 17 fâ HW 4»- Ü\ VD ”il 3\ il extern; { ---- } { Putframe } procedure putframe(outbuf : out_type); extern; c ---- } { LPCAnalysis } procedure LPCAnalysis(Inbuf: win_type; var A_coeff . CF_type; var Ccdeøutbuf : out_type ); extern; { ---- } { AnalysisFilter } procedure AnalysisFilter(var Inp: SF_type; var A_eoeff : CF_type; var Outp : SF_type; var FS_temp : FS_rype); var k,m : integer; signal : real; begin for k:= O to 79 do begin signal:= Inp[k]; FS_temp[O] := Inp[k]; for m := 10 downto 1 do begin signal := signal + A_Coeff[m] * FS_remp[m]; FS_remp[m] := FS_temp[m-1]; end ; 0utp[k] := signal; end ; end ; < ---- } { SynthesisFilter } procedure SynthesisFilter(var Inp: SF_rype; var a_coeff : CF_type; var Outp : SF_type; var FS_temp : FS_type); 469 "ärm 18 var k,m : integer; signal : real; begin for k:= O to 79 do begin signal := Inp[k]; for m := 10 downto 1 do begin signal := signal - A_Coeff[m] * FS_temp[m]; FS_temp[m] := FS_temp[m-1]; end ; Outpfk] := signal; FS_temp[1] := signal; end ; end ; { ---- } { LPCCalculations } procedure LPCCalculations(sub : integer; A_coeffn, A_coeffo : CF_type; var A_çoeff, A_W_coeff : var H_syntes : SF_type); extern; { LTP analysis } { PowerCalc } ;:'| If' CF_type; procedure PowerCalc(var Speech : SF_type; var power : real); var i : integer; begin power :=0; for i:=O to 79 do begin power:=power+SQR(Speech[i]); end ; 19 4eáf7e4 . a |||', end ; { ---- } { CalcPower } procedure CalcPower(var Speech : histSF_type; delay : integer; var Powerout : delay_type); var k : integer; power : real; begin power := ; for k:=O to 79 do begin power := power + SQR(Speech[k-delay]); end ; Powerout[delay]:= power; end ; { ---- } { CalcCorr } histSF_type; delay : integer; procedure CalcCorr(var Speech var Corrout : delay_type); var corr : real; begin corr := O; for k:=O to 79 do begin corr := corr + Speech[k] * Speech[k-delay]; end ; Corrout[delay] := corr; end ; { ---- } { CalcGain } procedure CalcGain(var power: real; var corr: real; var gain: real; var gain_code : integer); 2"! H 469 vsí 20 begin if power = 0 then begin gain:=O; end else begin gain := corr/power; end ; gain_oode.= ; while (gain > TB_PP_gain;border[gain_code]) and (gain;oode gain_code := gain_code+l; end ; gain := TB_PP_gain[gain_oode]; end; { ---- } { Decision } procedure Deoision(var in;power, power, corr, gain : real; delay : integer; var best_error, best¿power, best_corr : real; var best_delay : integer); begin if (in_power+SQR(gain)*power-2*gain*corr < best_error) then begin best_delay := delay; best_error := in_power+SQR(gain)*power-2*gain*corr; best_corr := corr; best_power := power; end 7 end ; { ---- } { GetPrediction } procedure GetPrediction(var delay : integer; var gain : real; var Hist : hist_type; var Pred : SF_type); var i,j : integer; sum : real; begin for i:=O to 79 do begin if (i-delay) < 0 then Pred[i] := gain * Hist[i-delay] else Pred[i] := gain * Pred[i-delay]; end ; end ; < ---- } { CalcSyntes } procedure CalcSyntes(delay : integer; var Hist : hist_type; var H_syntes : SF_type; var Pred, Overlap SF_rype); var k,i : integer; sum : real; begin for k:=O to Min(delay-1,79) do begin sum:=O; for i.=0 to Min(k,trunclength-1) do begin sum := sum + H_syntes[i] * Hist[k-i-delay]; end ; Pred[k] := end ; for k:=delay to 79 do begin Pred[k] := Pred[k-delay]; end 7 Sum 2 for k:=delay to Min(79,2*delay-1) do begin sum:=O; for i:=k-delay+1 to trunclength-1 do begin sum := sum + H_syntes[i] * Hist[k-i-delay]; end ; 0verlap[k]:= sum; end ; a ~ 4s9š764 for k:=2*delay to 79 do begin 22 Overlap[k]:= 0verlap[k-delay]; end ; end ; { ---- } { CalcPowerCorrAndDecisionl } procedure CalcPowerCorrAndDecisionl(delay : var kJ virt gcodel gcode2 gainc gain gain2 gain3 gain4 gain5 gain6 gain? gain8 error corr power corro Powero ccorr Zero3 Zero4 begin corr power corro Pred, Overlap : var best_error, best_gain : var best_gain_code, best_delay : OI IC integer; integer; integer; integer; integer; real; real; real; real; real; real; real; real; real; ARRAY[l..4] ARRAY[1..4] ARRAY[2..4] ARRAY[2..4] ARRAY[2..4] ARRAY[2..4] ARRAY[l..4] SF_fype; var in_power : of of of of of of of integer; var Speech, real; real; integer); real; real; real; real; real; real := (0.0, 0.0, 0.0); real := (0.0, 0.0, 0.0, 0.0); 23 Powero := Zero3; ccorr := Zero3; virt.= 79 DIV delay; corr[l]:= O; for k:=O to Min(delay-1,79) do corr[l]:= corr[1] + Speech[k]*Pred[k]; power[l]:= O; for k:=O to Min(delay-1,79) do power[l]:= powerfl] + SQR(Pred[k]); for j.= 1 to virt do begin corro[j+l]:= 0; for k:=j*delay to Min((j+1)*delay-1,79) do corro[j+l]:= corro[j+1] + Speech[k]*Overlap[k]; powero[j+l]:= 0; for k:=j*delay to Min((j+l)*delay-1,79) do powero[j+l]:= powero[j+1] + SQR(Overlap[k]); corr[j+l]:= O; for k:=j*delay to Min((j+1)*delay-1,79) do corr[j+l]:= corr[j+1] + Speech[k]*Pred[k]; power[j+l]:= 0; for k:=j*delay to Min((j+l)*delay-1,79) do power[j+l]:= power[j+1] + SQR(Pred[k]); ccorr[j+1]:= O; for :=j*delay to Min((j+1)*delay-1,79) do ccorr[j+l]:= ccorr[j+1] + Pred[k]*Overlap[k]; end; gcodel:= 0; gcode2:= 15; for gainc:= gcodel to gcode2 do begin gain := TB_PP_gain[gainc]; gain2:= SQR(gain); gain3:= gain*gain2; gain4:= SQR(gain2); gain5.= gain*gain4; 46% 764 24 gain6.= SQR(gain3); gain7.= gain*gain6; gain8:= SQR(gain4); error:= in;power - 2*gain*(corr[l] + corro[2]) gain2*(power[1] + powero[2] - 2*corr[2] - 2*corro[3]) gain3*(2*ccorr[2] - 2*corr[3] - 2*corro[4]) gain4*(power[2] + powero[3] - 2*corr[4]) 2*gain5*ccorr[3] + gain6*(power[3] + powero[4]) + 2*gain7*ccorr[4] + gain8*power[4]; ++++ if error < best_error then begin best_gain_code:= gainc; best_error:= error; best_delay.= delay; end; end; best_gain := TB_PP_gain[best_gain;çode]; end; { ---- } { CalcPowerCorrAndDecision2 } procedure CalcPowerCorrAndDecision2(delay : integer; var Speech, Pred, Overlap : SF_rype; var in_power : real; var best_error, best_gain : real; var best_gain_çode, best_delay : integer); var I k,i : integer; gain_code : integer; gain : real; error : real; corrl : real; powerl : real; begin corrl:= O; for k:=O to 79 do corrl:= corrl + Speech[k]*Pred[k]; powerl:= 0; 'i 25 469 764 for k:=O to 79 do 1 powerl:= powerl + SQR(Pred[k]); if powerl = 0 then begin gain:= ; end else begin gain := corrl/powerl; end ; gain_code:=0; while (gain > TB_PP_gain_border[gain_code]) and (gain_code gain_code := gain_code+l; end ; gain := TB_PP_gain[gain_çode]; error:= in_power -2*gain*corr1 +SQR(gain)*power1; if error < best_error then begin best_gain:= gain; best_gain_code:= gain_code; best_error:= error; best_delay:= delay; end; end ; { ---- } { PredictionRecursion } procedure PredictionRecursion(delay : integer; var Hist : hist_type; var H_syntes : SF_type; var Pred, Overlap : SF_type); var k : integer; begin for k:=Min(79,delay-1) downto trunclength do begin Pred[k]:= Pred[k-l]; end ; for k:=trunclength-1 downto 1 do begin Pred[k] := Pred[k-1] + H_syntes[k] * Hist[-delay]; end_; Pred[O] := H_syntes[O] * Hist[-delay]; 4e9ë7s4 26 for k.=delay to 79 do begin Pred[k] := Pred[k-delay]; end ; if 2*delay-l < 80 then Overlap[2*delay-1]:= O; for k:=Min(79,2*delay-2) downto delay do begin Overlap[k]:= Overlap[k-1]; end ; _ for k:=2*delay to 79 do begin 0verlap[k]:= Overlapfk-delay]; { Innovation analysis } { InnovationAnalysis } procedure InnovationAnalysis(speech : SF_type; A_coeff : CF_type; H_syntes:SF_type;PP_delay:integer;PP_gain:real; var index, gain_code : integer; var gain : real); extern; { ---- } { GetExcitation } procedure GetExcitation(index : integer; gain : real; var Excit : SF_type); extern; { ---- } { LTPSynthesis } procedure LTPSynthesis(delay : integer; a_gain : real; var Excitin : SF_type; var Excitout : SF_type); Var i : integer; begin 27 2469 :'64 for i.=O to 79 do begin if (i-delay) >= 0 then Excitout[i]:= Excitin[i] + a_gain*Excitout[i-delay] else Excitout[i]:= Excitin[i]; end ; < ---- } {---} {--} {-} {MAIN PRoGRAM} { Begin } begin {--} { Initialization } { Init Coding parameters } Initializations; { --- } { Zero history } for i:=-160 to -1 do begin PP_history[i] := 0; Weighted_speech[i] := 0; end ; { --- } { Zero filter states } for i.=O to 10 do begin ll II \O FS_zero_state[i] oo ll \c FS_analys[i] FS_temp[i] FS_Wsyntes[i] FS_ringing[i] end ; cl ll \0 .||. 'Ü- o c: o c: o 764 za j {---} { Init other variables } for i:=O to 79 do PP_Overlap[i]:=0; for i.=O to 79 do begin H_W_syntes[i]:=O; Zero_subframe[i]:=0; end: {---} {--} { For frame_pr:= l to number_of_frames do begin } for frame_pr:= 1 to number_of_frames do begin {--} { LPC analysis } getframe(SpeechInbuf); A_coeffold:= A_coeffnew; LPCAnalysis(SpeechInbuf,A_Coeffnew,Code0utbuf); {--} { For subframe_nr:=l to 4 do begin } for subframe_nr.=l to 4 do begin {--} { Subframe pre processing } { Get subframe samples } for i:=O to 79 do begin Original_speech[i]:= SpeechInbuf[i+(subframe_nr-1)*80]; end ; {---} { LPC caloulations } LPCCalculations(subframe_nr, A_coeffnew, A_coeffold, A_coeff, A_W_çoeff, H_W_syntes); {---} { Weighting filtering } i? 29 'ïf-469 764 AnalysisFilter(Original_Speech,A;ooeff, Original_Residue,FS_analys); SynthesisFilter(Original_residue,A_W_coeff, Original_Wspeech,FS_Wsyntes); { Open loop LTP search } { LTP preprocessing } { Initialize weighted speech } for i.=O to 79 do begin Weighted_speech[i]:= Original_Wspeech[i]; end ; { ----- } { Calculate power of weighted_speech to in_power } PowerCalc(Original_Wspeech,in_power); { ----- } { Get limits lower and upper } lower := 20; upper := 147; { ----- } { ---- } { Openloop search of integer delays } { Calc power and corr for first delay } delay := lower; CalcCorr(Weighted_speech,delay,Opencorrelation); CalcPower(Weighted_speech,delay,Openpower)7 { ----- } { Init best delay } PP_delay := lower; 46§ 764 30 Ä best_oorrl := Opencorrelation[PP_delay]; best_powerl := 0penpower[PP_delay]; CalcGain(best_powerl,best_corr1,PP_gainl,PP_gain_codel); PB_best_error := In_power+SQR(PP_gainl)*best_powerl -2*PP_gainl*best_corr1; { ----- 1 { For delay := lower+l to upper do begin } for delay := lower+l to upper do begin { ----- } { Calculate power } CalcPower(Weighted_speech,delay,Openpower); { ----- } ' { Calculate corr } CalcCorr(Weighted_speech,delay,Opencorrelation); { ----- } { Calculate gain } power:= Openpower[delay]; corr:= 0pencorrelation[delay]; CalcGain(power,corr,gain,gain_oode); { ----- } { Decide if best vector so far } Decision(in_power,power,corr,gain,delay, PP_best_error,best_powerl,best_corr1,PP_delay); { ---- } { LTP postprocessing } { Calculate gain } CalcGain(best_powerl, best_corrl, PR_gainl, PP_gain_oode); é 31 4e9¶í7e4 { ----- } { Get prediction according to delay and gain } PP_delayl:= PP_delay; PP_gain_codel:= PP_gain_code; GetPrediction(PP_delay1, PB_gainl, PR_history, Prediction1); { ----- } { Synthesize prediction and remove memory ringing } FS_temp.= FS_ringing; SynthesisFilter(Predictionl,A_W_coeff, Prediction_syntes,FS_temp); { ----- } { Residual after LTP and STP } for i.=O to 79 do begin Weighted_Speeohl[i] := Weighted_Speech[i] - Prediction_syntes[i]; { Update Weighted_speech } for i.= -160 to -1 do begin Weighted_speech[i]:= Weighted_speech[i+80]; end ; Excitation coding } { Innovation Analysis } InnovationAnalysis(Weighted_speechl, A_W_coeff, H_W_syntes, PP_delay1, PP_gain1, CB_index1,CB_gain_çodel,CB_gainl); { ---- } { Get Excitation } 469§764 32 el GetExcitation(CB_index1, CB_gainl, Excitationl); { ---- } { Synthesize excitation } LTPSynthesis(PP_delayl, PP_gainl, Excitationl, Excitationl); FS_temp:= FS_zero_state; SynthesisFilter(Excitationl,A;W_coeff, Weighted_excitation,FS_temp); for k.= 0 to 79 do begin Weighted_speechl[k] := Weighted_speechl[k] - Weighted_excitation[k]; end ; { ---- } { Calculate error } PowerCalc(Weighted_speechl, Best_errorl); { ---- } { { -- } { { Closed loop LTP search } { LTP preprocessing } { Remove ringing } FS_fiemp:= FS_ringing; SynthesisFilter(Zero_subframe,A_W_coeff,Ringing,FS_temp); for k:= 0 to 79 do begin Original_Wspeech[k] := 0riginal_Wspeech[k] - Ringing[k]; Weighted_speech[k] := Original_Wspeech[k]; end ; { ----- } { Calculate power of weighted_speech to IN_power } PowerCalc(Original_Wspeech,in_power); { ----- } { Get limits lower and upper } f 33 i; e 469 764 lower := 20; upper := 1477 { ---- } { Exhaustive search of integer delays } { Calc prediction for first delay } delay := lower; CalcSyntes(delay, PP_history, H_W_syntes, Prediction, PP_overlap); < ----- } { Init decision } PP_delay := delay; PP_gain;code := O; PP_best_error := in_power; { ----- } { Calc power and corr decide gain } if delay <= 79 then begin CalcPowerCorrAndDecisionl(delay, Original_Wspeech, Prediction, PP_overlap, in_power, PP_best_error, PP_gain2, PP_gain_code, PP_delay); end else begin CalcPowerCorrAndDecision2(delay, Original_Wspeech, Prediction, PP_overlap, in_power, PP_best_error, PP_gain2, PP_gain_code, PP_delay); { For delay := lower+l to upper do begin } for delay := lower+l to upper do begin { ----- } { Prediction recursion } PredictionRecursion(delay, PP_history, H_W_syntes, 469 154 34 I Prediction, PP_overlap); { ----- } { Calc power and corr decide gain } if delay <= 79 then begin CalcPowerCorrAndDecisionl(delay, Original_Wspeech, Prediction, PP_overlap, in_power, PP_best_error, PP_gain2, PP_gain_code, PP_delay); end else begin CalcPowerCorrAndDecision2(delay, Original_Wspeech, Prediction, PP_overlap, in;power, PP_best_error, PP_gain2, PP_gain_code, PP_delay); { ---- } { LTP postprocessing } { Get prediction according to PP_delay and gain } PP_delay2:= PP_delay; PP_gain_code2:= PP_gain_code; GetPrediction(PP_delay2, PP_gain2, PP_history, Prediction2); { ----- } { Synthesize prediction to prediction;syntes } FS_temp,= FS_zero_state; SynthesisFilter(Prediction2,A_W_coeff, Prediction;syntesLFS_temp); { ----- } { Residual after LTP and STP } for i:=O to 79 do begin 35 ï* ~ ~469 764 Weighted_Speech2[i]:= Weighted_Speech[i] - Prediction_syntes[i]; { --- } { Excitation coding } { Innovation Analysis } InnovationAnalysis(Weighted_speech2,A_W_Coeff, H_W_syntes, PP_delay2, PP_gain2, CB_index2,CB_gain_code2,CB_gain2); { ---- } ~ { Get Excitation } GetExcitation(CB_index2, CB_gain2, Excitation2); { ---- } { Synthesize excitation } LTPSynthesis(PP_delay2, PP_gain2, Excitation2, Excitation2); FS_temp:= FS_zero_state; SynthesisFilter(Excitation2,A_W_coeff, Weighted_exoitation,FS_temp); for k:= O to 79 do begin Weighted_speech2[k] := Weighted_speech2[k] - Weighted_excitation[k]; end ; { ---- } { Caloulate error } PowerCalc(Weighted_speech2, Best_error2); { ---- } { { -- } { Subframe post processing } { Mode Selection } 4692764 36 if best_error1 < best_error2 then begin mode:= 1; Prediction:= Predictionl; Excitation:= Excitationl; PP_delay:= PP_delay1; PP_gain_code.= PP_gain_code1; CB_index.= CB_index1; CB_gain_code:= CB_gain_code1; end else begin mode.= -1; Prediction:= Prediction2; Excitation:= Excitation2; PP_dela := PP_delay2; PP_gain_code:= PP_gain_code2; CB_index:= CB_index2; CB_gain_code:= CB_gain_code2; end; {---} { Output parameters } CodeOutbuf[l0+(subframe_nr-1)*4+1]:= PP_delay; CodeOutbuf[lO+(subframe_nr-1)*4+2]:= PP_gain_code; Code0utbuf[lO+(subframe_nr-l)*4+3]:= CB_index; Code0utbuf[lO+(subframe_nr-l)*4+4]:= CB_gain_code; {---} { Get excitation } for i.=0 TO 79 do begin Excitation[i] := Excitaticn[i] + Prediction[i]; end ; {---} { Update PP_history with Excitation } for i.= -160 to -81 do begin PP_history[i] := PP_history[i+80]; end ; - 37 »4s9 764 for i:= -80 to -1 do begin PP_history[i] := Excitation[i+80]; end ; { --- } { Synthesize ringing } SynthesisFilter(Excitatiøn,A;W;çoeff, Weighted_excitation,FS_ringing); {---} {--} { End this subframe } end ; putframe(Code0utbuf); {--} { End this frame } end ; {--} { End Program } end . <--} {-}

Claims (7)

10 15 20 25 4651; 764 38 ff: P A T E N T K R A V
1. Sätt att koda en samplad talsignalvektor (s(n)) i ett analys- genom-syntesförfarande genom bildande av en optimal excitations- vektor bestående av en linjär kombination av en kodvektor ur en fast kodbok (12) och en långtidsprediktorvektor, k ä n n e - t e c k n a t av (a) att ett första estimat på långtidsprediktorvektorn bil- das i en öppen slinganalys (22, 24, 30, 32, 34, 36); (b) att ett andra estimat på lángtidsprediktorvektorn bildas i en sluten slinganalys (gL, 14, 16, 20, 22, 24, 28, 34, 36); och (c) att det första och det andra estimatet vart och ett i en uttömmande sökning linjärt kombineras (g,, gL, 14, 16, 20, 22, 24 28, 36) med alla kodvektorerna i den fasta kodboken (12) för bildande av den excitationsvektor som ger den bästa kodningen av talsignalvektorn (s(n)).
2. Sätt enligt krav 1, k ä n n e t e c k n a t av att det första och det andra estimatet av làngtidsprediktorvektorn i steg (c) bildas i ett och samma filter (28, gL).
3. Sätt enligt krav 1, k ä n n e t e c k n a t av att det första och det andra estimatet av làngtidsprediktorvektorn i steg (c) lagras i och hämtas ur en och samma adaptiva kodbok (10).
4. Sätt enligt något av föregående krav, k ä n n e t e c k n a t av att det första och det andra estimatet av långtidsprediktor- vektorn bildas av en högupplösande prediktor.
5. Sätt enligt något av föregående krav, k ä n n e t e c k n a t av att det första och det andra estimatet av långtidsprediktor- vektorn bildas av en prediktor med ett ordningstal p>1. 10 39 5- - -s4s9 764
6. Sätt enligt något av kraven 2, 4-5, k ä n n e t e c k n a t av att det första och andra estimatet påläggs vardera en för- stärkningsfaktor (gL), vilka väljs ur en uppsättning kvantiserade förstärkningsfaktorer.
7. Sätt enligt något av föregående krav, k ä n n e t e c k n a t av att det första och andra estimatet representerar vardera en karakteristisk fördröjning (L) och att det andra estimatets för- dröjning söks i områden kring det första estimatets fördröjning samt multipler eller submultipler av denna.
SE9200217A 1992-01-27 1992-01-27 Saett att koda en samplad talsignalvektor SE469764B (sv)

Priority Applications (15)

Application Number Priority Date Filing Date Title
SE9200217A SE469764B (sv) 1992-01-27 1992-01-27 Saett att koda en samplad talsignalvektor
TW082100183A TW227609B (sv) 1992-01-27 1993-01-13
DK93903357.7T DK0577809T3 (da) 1992-01-27 1993-01-19 Dobbelttilstands langtidsprediktion i talekodning
ES93903357T ES2110595T3 (es) 1992-01-27 1993-01-19 Prevision a largo plazo de doble modalidad en el codificado de la palabra.
JP05513132A JP3073017B2 (ja) 1992-01-27 1993-01-19 音声コーディングにおけるダブルモード長期予測
EP93903357A EP0577809B1 (en) 1992-01-27 1993-01-19 Double mode long term prediction in speech coding
AU34651/93A AU658053B2 (en) 1992-01-27 1993-01-19 Double mode long term prediction in speech coding
PCT/SE1993/000024 WO1993015503A1 (en) 1992-01-27 1993-01-19 Double mode long term prediction in speech coding
DE69314389T DE69314389T2 (de) 1992-01-27 1993-01-19 Zweimoden langzeitprädiktion in sprechkodierung
CA002106390A CA2106390A1 (en) 1992-01-27 1993-01-19 Double mode long term prediction in speech coding
BR9303964A BR9303964A (pt) 1992-01-27 1993-01-19 Processo de codificar um vetor de sinal de voz amostrado (s(n)) em um procedimento de análise por síntese
US08/009,245 US5553191A (en) 1992-01-27 1993-01-26 Double mode long term prediction in speech coding
MX9300401A MX9300401A (es) 1992-01-27 1993-01-26 Prediccion a largo plazo de modo doble en codificacion de voz.
FI934063A FI934063A (fi) 1992-01-27 1993-09-16 Saett att koda en samplad talsignalvektor
HK98102397A HK1003346A1 (en) 1992-01-27 1998-03-20 Double mode long term prediction in speech coding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9200217A SE469764B (sv) 1992-01-27 1992-01-27 Saett att koda en samplad talsignalvektor

Publications (3)

Publication Number Publication Date
SE9200217D0 SE9200217D0 (sv) 1992-01-27
SE9200217L SE9200217L (sv) 1993-07-28
SE469764B true SE469764B (sv) 1993-09-06

Family

ID=20385120

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9200217A SE469764B (sv) 1992-01-27 1992-01-27 Saett att koda en samplad talsignalvektor

Country Status (15)

Country Link
US (1) US5553191A (sv)
EP (1) EP0577809B1 (sv)
JP (1) JP3073017B2 (sv)
AU (1) AU658053B2 (sv)
BR (1) BR9303964A (sv)
CA (1) CA2106390A1 (sv)
DE (1) DE69314389T2 (sv)
DK (1) DK0577809T3 (sv)
ES (1) ES2110595T3 (sv)
FI (1) FI934063A (sv)
HK (1) HK1003346A1 (sv)
MX (1) MX9300401A (sv)
SE (1) SE469764B (sv)
TW (1) TW227609B (sv)
WO (1) WO1993015503A1 (sv)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI95086C (sv) * 1992-11-26 1995-12-11 Nokia Mobile Phones Ltd Förfarande för effektiv kodning av en talsignal
DE69526926T2 (de) * 1994-02-01 2003-01-02 Qualcomm Inc Lineare vorhersage durch impulsanregung
GB9408037D0 (en) * 1994-04-22 1994-06-15 Philips Electronics Uk Ltd Analogue signal coder
US7133835B1 (en) * 1995-08-08 2006-11-07 Cxn, Inc. Online exchange market system with a buyer auction and a seller auction
US6765904B1 (en) 1999-08-10 2004-07-20 Texas Instruments Incorporated Packet networks
US5799272A (en) * 1996-07-01 1998-08-25 Ess Technology, Inc. Switched multiple sequence excitation model for low bit rate speech compression
JP3357795B2 (ja) * 1996-08-16 2002-12-16 株式会社東芝 音声符号化方法および装置
FI964975A (sv) * 1996-12-12 1998-06-13 Nokia Mobile Phones Ltd Förfarande och anordning för talkodning
US6068630A (en) * 1997-01-02 2000-05-30 St. Francis Medical Technologies, Inc. Spine distraction implant
US7072832B1 (en) * 1998-08-24 2006-07-04 Mindspeed Technologies, Inc. System for speech encoding having an adaptive encoding arrangement
SE519563C2 (sv) * 1998-09-16 2003-03-11 Ericsson Telefon Ab L M Förfarande och kodare för linjär prediktiv analys-genom- synteskodning
US6678267B1 (en) 1999-08-10 2004-01-13 Texas Instruments Incorporated Wireless telephone with excitation reconstruction of lost packet
US6801499B1 (en) * 1999-08-10 2004-10-05 Texas Instruments Incorporated Diversity schemes for packet communications
US6801532B1 (en) * 1999-08-10 2004-10-05 Texas Instruments Incorporated Packet reconstruction processes for packet communications
US6757256B1 (en) 1999-08-10 2004-06-29 Texas Instruments Incorporated Process of sending packets of real-time information
US6744757B1 (en) 1999-08-10 2004-06-01 Texas Instruments Incorporated Private branch exchange systems for packet communications
US6804244B1 (en) 1999-08-10 2004-10-12 Texas Instruments Incorporated Integrated circuits for packet communications
US7574351B2 (en) * 1999-12-14 2009-08-11 Texas Instruments Incorporated Arranging CELP information of one frame in a second packet
US7103538B1 (en) * 2002-06-10 2006-09-05 Mindspeed Technologies, Inc. Fixed code book with embedded adaptive code book
FI118835B (sv) * 2004-02-23 2008-03-31 Nokia Corp Väljändet av en kodningsmodell
US9058812B2 (en) * 2005-07-27 2015-06-16 Google Technology Holdings LLC Method and system for coding an information signal using pitch delay contour adjustment
ATE500588T1 (de) 2008-01-04 2011-03-15 Dolby Sweden Ab Audiokodierer und -dekodierer
WO2012008891A1 (en) * 2010-07-16 2012-01-19 Telefonaktiebolaget L M Ericsson (Publ) Audio encoder and decoder and methods for encoding and decoding an audio signal

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8500843A (nl) * 1985-03-22 1986-10-16 Koninkl Philips Electronics Nv Multipuls-excitatie lineair-predictieve spraakcoder.
US4868867A (en) * 1987-04-06 1989-09-19 Voicecraft Inc. Vector excitation speech or audio coder for transmission or storage
US5359696A (en) * 1988-06-28 1994-10-25 Motorola Inc. Digital speech coder having improved sub-sample resolution long-term predictor
US5097508A (en) * 1989-08-31 1992-03-17 Codex Corporation Digital speech coder having improved long term lag parameter determination
CA2051304C (en) * 1990-09-18 1996-03-05 Tomohiko Taniguchi Speech coding and decoding system
US5271089A (en) * 1990-11-02 1993-12-14 Nec Corporation Speech parameter encoding method capable of transmitting a spectrum parameter at a reduced number of bits
ES2225321T3 (es) * 1991-06-11 2005-03-16 Qualcomm Incorporated Aparaato y procedimiento para el enmascaramiento de errores en tramas de datos.
US5233660A (en) * 1991-09-10 1993-08-03 At&T Bell Laboratories Method and apparatus for low-delay celp speech coding and decoding

Also Published As

Publication number Publication date
FI934063A0 (fi) 1993-09-16
HK1003346A1 (en) 1998-10-23
JP3073017B2 (ja) 2000-08-07
DE69314389T2 (de) 1998-02-05
AU3465193A (en) 1993-09-01
US5553191A (en) 1996-09-03
MX9300401A (es) 1993-07-01
FI934063A (fi) 1993-09-16
BR9303964A (pt) 1994-08-02
TW227609B (sv) 1994-08-01
EP0577809B1 (en) 1997-10-08
AU658053B2 (en) 1995-03-30
CA2106390A1 (en) 1993-07-28
SE9200217D0 (sv) 1992-01-27
WO1993015503A1 (en) 1993-08-05
ES2110595T3 (es) 1998-02-16
DE69314389D1 (de) 1997-11-13
JPH06506544A (ja) 1994-07-21
SE9200217L (sv) 1993-07-28
DK0577809T3 (da) 1998-05-25
EP0577809A1 (en) 1994-01-12

Similar Documents

Publication Publication Date Title
SE469764B (sv) Saett att koda en samplad talsignalvektor
KR100389693B1 (ko) 선형예측및대수코드여기를사용하는음성코딩방법
US6401062B1 (en) Apparatus for encoding and apparatus for decoding speech and musical signals
EP0696026B1 (en) Speech coding device
EP0422232B1 (en) Voice encoder
CA2242437C (en) Voice coding and decoding system
SE518319C2 (sv) Förfarande och anordning för vektorkvantisering
US5351338A (en) Time variable spectral analysis based on interpolation for speech coding
US6023672A (en) Speech coder
EP0996949A2 (en) Split band linear prediction vocoder
EP0415163B1 (en) Digital speech coder having improved long term lag parameter determination
DE69921066T2 (de) Verfahren und Vorrichtung zur Sprachkodierung
SE504397C2 (sv) Metod för förstärkningskvantisering vid linjärprediktiv talkodning med kodboksexcitering
EP0720145B1 (en) Speech pitch lag coding apparatus and method
SE517793C2 (sv) Sätt att åstadkomma ett spektralbrusviktningsfilter att använda i en talkodare
EP0578436A1 (en) Selective application of speech coding techniques
EP1473710A1 (en) Audio encoding apparatus
JPH09319398A (ja) 信号符号化装置
JP2970407B2 (ja) 音声の励振信号符号化装置
KR100319924B1 (ko) 음성 부호화시에 대수코드북에서의 대수코드 탐색방법
SE519563C2 (sv) Förfarande och kodare för linjär prediktiv analys-genom- synteskodning
US6041298A (en) Method for synthesizing a frame of a speech signal with a computed stochastic excitation part
JPH08185199A (ja) 音声符号化装置
JP3144194B2 (ja) 音声符号化装置
KR100366700B1 (ko) 코드여기 선형 예측 부호화에 있어서 상관함수에 기초한 적응 코드북 탐색방법

Legal Events

Date Code Title Description
NAL Patent in force

Ref document number: 9200217-9

Format of ref document f/p: F

NUG Patent has lapsed

Ref document number: 9200217-9

Format of ref document f/p: F