NO322638B1 - Metode og apparat for maskering av feil i rammer med data. - Google Patents

Metode og apparat for maskering av feil i rammer med data. Download PDF

Info

Publication number
NO322638B1
NO322638B1 NO20050567A NO20050567A NO322638B1 NO 322638 B1 NO322638 B1 NO 322638B1 NO 20050567 A NO20050567 A NO 20050567A NO 20050567 A NO20050567 A NO 20050567A NO 322638 B1 NO322638 B1 NO 322638B1
Authority
NO
Norway
Prior art keywords
frame
data
value
speech
indication
Prior art date
Application number
NO20050567A
Other languages
English (en)
Other versions
NO20050567D0 (no
NO20050567L (no
Inventor
Chong U Lee
Klein S Gilhousen
Paul E Jacobs
William R Gardner
Katherine S Lam
Ming-Chang Tsai
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Priority to NO20050567A priority Critical patent/NO322638B1/no
Publication of NO20050567D0 publication Critical patent/NO20050567D0/no
Publication of NO20050567L publication Critical patent/NO20050567L/no
Publication of NO322638B1 publication Critical patent/NO322638B1/no

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Apparat og fremgangsmåte for å utføre talesignalkompresjon ved hjelp av koding ved forskjellig takt, av tidsintervaller eller rammer med digitaliserte talesampler (10). Taleaktivitetsnivået i hver ramme bestemmes, og en utgangsdatapakketakt velges ut fra et sett tilgjengelige taktverdier og basert på det bestemte aktivitetsnivå i rammen. En laveste takt tilsvarer et lavt taleaktivitetsnivå, så som bakgrunnsstøy eller pauser i talen, mens den høyeste takt tilsvarer et bestemt taleaktivitetsnivå så som uttalelse av vokaler. Hver ramme kodes deretter i henhold til et forhåndsbestemt kodeformat for den bestemte takt, idet hver takt har et tilsvarende antall bit i en kodet ramme. En datapakke frembringes for hver kodede ramme, og hver pakke far en bittakt som tilsvarer den forhåndsbestemte takt.

Description

Denne nye teknikk gjelder taleprosessering, særlig talekompresjon med dynamisk varierbar kompresjon og minimal kvalitetsreduksjon av den rekonstruerte tale. Siden videre den komprimerte digitale tale skal overføres i en kanal hvor det kan introduseres feil, søker også oppfinnelsens apparat og fremgangsmåte å redusere slike feils kvalitetspåvirkning.
Taleoverføring ved hjelp av digitalteknikk er meget utstrakt, særlig innenfor fjemtelefonsamband og digital radiooverføring. Dette har på sin side gitt årsak til interesse for å bestemme det minste kvantum informasjon som kan sendes over en aktuell kanal uten at den rekonstruerte tale på mottakersiden far hørbar kvalitetsforringelse. Hvis talen overføres ved at man rett og slett utfører sampling (avlasting) og digitalisering vil det kreves en dataoverføringshastighet (bitrate eller datatakt) i størrelsesorden 64 kilobit pr. sekund (kb/s) for å oppnå samme talekvalitet som via et konvensjonelt telefonsamband med analog taleoverføring. Man kan imidlertid ved å utnytte taleanalyse etterfulgt av hensiktsmessig koding, signaloverføring og rekonstruksjonssyntese på mottakersiden komme frem til en meget betydelig reduksjon av den nødvendige datatakt.
Apparater som benytter teknikk for kompresjon av tale ved å trekke ut parametere som relateres til en modell for menneskelig talefrembringelse kalles typisk vokodere. Slike apparater består av en kodeenhet som analyserer den innkommende tale og trekker ut relevante parametere fra denne, og en dekoder som på mottakersiden av en overføring igjen bygger opp forståelig tale ved syntese (dvs. rekonstruerer den opprinnelige tale) ved å bygge på de parametere som overføres i den aktuelle transmisjonskanal. For hele tiden å være presis må modellen stadig endre seg, og derfor deles talen opp i ndsblokker (analyserammer) Som parametrene blir beregnet for, og så oppdateres parametrene for hver ny ramme.
De forskjellige klasser av talekodere har en klasse som omfatter lineær kodeaktivert prediktiv koding (CELP), stokastisk koding og vektoraktivert talekoding. Et eksempel på en kodealgoritme i denne talekodeklasse fines i artikkelen "A 4,8 kbps Code Excited Linear Predictive Coder" av T.E.Tremain et al. i Proe. of the Mobile Satellite Conference, 1988.
Hensikten med vokoderen er å komprimere det digitale talesignal til et lavtakts-signal ved å fjerne samtlige av de naturlige redundante elementer i talen. Tale har nemlig et stort antall korttidige informasjonssekvenser som er redundante, dvs. ikke tilføres noe nytt, og visse sekvenser fremkommer hovedsakelig ved den filtervirkning som oppstår i taleorganet, og tilsvarende foreligger langtidsredundansfenomener som skyldes aktiveringen (eksiteringen) fra stemmebåndene av taleorganets øvrige deler. I en CELP-koder kan dette simuleres i en modell ved hjelp av to filtere, et formantfilter for korttidsfenomenene og et tonehøydefilter for langtidsfenomenene. Når disse redundanser er trukket ut vil det gjenværende signal (residualsignalet) kunne moduleres som Gauss-fordelt, "hvit" støy som også må kodes. Grunnlaget for denne teknikk er å beregne parametrene for et filter som kalles LPC-filter som utfører filtrering av talebølgeformen ved hjelp av en modell av det menneskelige taleorgan, basert på korttids filtrering og et forhåndsbestemt estimat (prediksjon). I tillegg moduleres taleforløpene med lengre periodisitet eller varighet og som har med talens tonehøyde å gjøre ved å beregne parametrene for et tonehøydefilter som i alt vesentlig setter opp en modell av stemmebåndene. Endelig må filtrene aktiveres på riktig måte, og dette utføres ved å bestemme hvilken bølgeform av et større antall tilfeldig eksiterte slike som er i en såkalt kodebok, som fører til den best mulige tilnærmelse til den opprinnelige tale når bølgeformen aktiverer de to filtere. Følgelig vil de overførte parametere være relatert til tre faktorer: (l) LPC-filteret, (2) tonehøydefilteret og (3) kodebokeksiteringen.
Selv om bruken av vokodeteknikk gir vesentlige forbedringer ved reduksjon av den informasjonsmengde som sendes over en kanal uten at dermed talekvaliteten reduseres, kan man bruke andre teknikker for å komme frem til ytterligere reduksjon. En slik tidligere brukt teknikk for å redusere informasjonsmengden som trengs for overføring av tale med en bestemt kvalitet er såkalt VAG som står for "voice activity gating" eller talestyring. 1 henhold til denne teknikk overføres ingen informasjon i talepauser, idet det er starten av en talesekvens som aktiverer kanalen. Denne teknikk gir nok en reduksjon i den datamengde som overføres, men den har forskjellige ulemper.
I mange tilfeller reduseres talekvaliteten ved at den første del av en talesekvens eller et ord ikke kommer med, og et annet problem med å slå sambandet i kanalen av under inak-tive perioder er at bakgrunnsstøyen samtidig blir borte, hvilket kan virke forstyrrende. En mottaker vil derfor ofte vurdere talekvaliteten som dårligere enn i en normal telefonsamtale. Nok et problem med talestyring er at plutselige støyfenomener kan aktivere senderen selv om ingen tale skal overføres, hvilket fører til forstyrrende støypulser i mottakeren.
I et forsøk på å forbedre talekvaliteten av syntetisert tale i talestyrte systemer føyer man til syntesedannet bakgrunnsstøy i dekodeprosessen. Man kan nok oppnå en viss kvali-tetsforbedring ved slike tiltak, men totalkvaliteten bedres egentlig ikke siden den tilføyde "komfortstøy" ikke egentlig er noen modell av den aktuelle bakgrunnsstøy på sendersiden.
En teknikk som i stedet foretrekkes når det gjelder datakompresjon i den hensikt å redusere mengden informasjon som trengs for en overføring er å utføre vokoding med varierbar eller variabel overføringshastighet. Siden talen i utgangspunktet inneholder perioder uten informasjon i form av talepauser kan mengden av data som trengs for å representere slike perioder reduseres. Vokoding med variabel takt utnytter på en høyst effektiv måte dette faktum ved å redusere datatakten for de stumme perioder. En reduksjon av datatakten, i motsetning til et fullstendig opphør av overføringen under tause perioder unngår de problemer som er knyttet til talestyringen, men har likevel dennes fordeler med reduksjon av informasjonsmengden.
Fra den teknikk som særskilt berører denne nye teknikk skal nevnes Motorolas WO
91/05333 for feilkorreksjon av talesignaler, særlig i forbindelse med vokoding.
På basis av denne kjente teknikk og ut fra det som er gjennomgått innledningsvis er den nye teknikks mål å komme frem til et apparat og en fremgangsmåte for maskering av feil i rammer med data, i forbindelse med talekompresjon, vokoding og forskjellige over-føringshastigheter.
Den nye teknikk bygger på en vokodealgoritme som hører til den innledningsvis nevnte klasse av talekodere (CELP, stokastisk koding eller vektoraktivert talekoding). CELP-teknikken alene gir en betydelig reduksjon i den nødvendige datamengde som representerer talen, slik at man får høykvalitets tale også etter rekonstruksjonen ved hjelp av syntese. Som nevnt tidligere oppdateres vokodeparametrene i hver tidsramme. Vokodere av nyere typer gir imidlertid varierbar datatakt på utgangen ved å endre modellparametrenes frekvens og nøyaktighetsgrad.
Det nye skiller seg imidlertid ganske vesentlig fra den grunnleggende CELP-teknikk ved å frembringe en varierbar utgangsdatatakt på grunnlag av taleaktiviteten. Strukturen dannes slik at parametrene oppdateres mindre ofte eller med mindre grad av nøyaktighet under talepauser. Denne teknikk tillater en større reduksjon i informasjonsmengden som må overføres for å opprettholde en viss talekvalitet. Det fenomen som utnyttes for å redusere datatakten er taleaktivitetsfaktoren som angir gjennomsnittlig hvor stor del av tiden en person som fører en samtale egentlig utfører aktiv tale. For typiske toveis telefonsamtaler reduseres den gjennomsnittlige datatakt med en faktor på 2 eller mer. Under pauser i talen kodes bare bakgrunnsstøyen av vokoderen, og under slike perioder behøver enkelte av parametrene som har med den menneskelige taleorganmodell å gjøre ikke overføres i det hele tatt.
Som nevnt tidligere har man tidligere gjort forsøk på å redusere informasjonsmengden som blir overført under talepauser ved å bygge på taleaktivering, hvorved ingen informasjon i det hele tatt sendes ut når det er opphør i talen. På mottakersiden kan disse pauser fylles opp med syntesefrembrakt "komfortstøy". I kontrast til dette vil en vokoder med varierbar overføringstakt kontinuerlig overføre data som i en foretrukket utførelse foregår ved overføringshastigheter som ligger mellom omkring 1 og 8 kb/s. En vokoder som gir kontinuerlig overføring av data eliminerer behovet for syntetisert støy, idet koding av bakgrunnsstøyen gir en mer naturlig for på den "resyntétiserte" tale. Man får dermed en betydelig forbedring i kvaliteten av rekonstruert tale ved hjelp av syntese, i forhold til den kvalitet som oppnås ved ren talestyring, og forskjellen fremkommer ved at det tilveiebringes en myk overgang mellom talen og bakgrunnsstøyen.
Videre brukes en ny teknikk for å maskere tilstedeværelsen av feil. Siden de aktuelle data er beregnet for overføring i en kanal som kan være støybeheftet, for eksempel et radiolinksamband, må datafeil kunne håndteres. Tidligere teknikk som brukte kanalkoding for å redusere antallet feil som kunne oppstå i kanalen kunne gi brukbare resultater med hensyn til støyreduksjon. Imidlertid kan ikke kanalkoding alene gi den støybeskyttelse som er nødvendig for å sikre høykvalitets gjenvunnet tale. I en vokoder med variabel takt og hvor talekodingen utføres kontinuerlig kan en feil ødelegge data som gjelder bestemte interessante talesekvenser såsom starten av et ord eller en stavelse. Et typisk problem med LPC-baserte vokodere er at feil i parametrene som gjelder modellen for taleorganet vil forårsake lyder som er vagt menneskelignende og som kan endre lydbildet av originalordet i tilstrekkelig grad til å forstyrre lytteren. I henhold til den nye taleforbedringsteknikk maskeres feil for å redusere oppfattelsen hos lytteren. Feilmaskering slik som det benyttes ifølge den nye teknikk gir altså en drastisk reduksjon i hvordan feil påvirker taleforståelsen.
Siden den maksimale mengde en parameter kan endres er begrenset til mindre verdier ved langsom takt, vil parametere som overføres ved slike taktverdier påvirke talekvaliteten mindre. Siden feil i de forskjellige taktområder har forskjellig persepsjons-virkning på talekvaliteten, kan overføringssystemet optimaliseres for å gi større beskyttelse mot høyere datataktverdier. Derfor tilveiebringer den nye teknikk som en tilleggsfinesse robusthet for kanalfeil.
Den nye teknikk bidrar ved å bruke en taktutgangsversjon med variabel takt i CELP-algoritmen en talekompresjon som i dynamikk varierer fra 8:1 til 64:1 i avhengighet av taleaktiviteten. Disse kompresjonsfaktorer refereres til en ulineær inngang (p-skalert) og med kompresjonsfaktorene multiplisert med en faktor på 2,0 for lineær inngang. Taktbestemmelsen utføres på ramme-til-ramme-basis for å vinne full utnyttelse av taleaktivitetsfaktoren. Selv om mindre data frembringes under talepauser vil den oppfattede degradering av den syntetiserte bakgrunnsstøy reduseres til et minimum. Den nye teknikks teknikk bevirker at man kan oppnå høykvalitets tale (near-toll) med en maksimal datatakt på 8 kb/s og en gjennomsnittlig datatakt i størrelsesorden 3,5 kb/s under normal konversasjon.
Således foreslås i og med oppfinnelsen et apparat i henhold til patentkrav 1, nemlig et apparat for maskering av feil i rammer med data, kjenetegnet ved midler for å motta slike rammer og gi en indikasjon på eventuelle rammeunormaliteter i en aktuell ramme med data, et lager for lagring av data fra minst én tidligere ramme og formidling av disse data fra en bestemt tidligere ramme i respons på indikasjonen av en rammefeil, og prosessmidler for, i respons på indikasjonen av en rammeunormalitet, å prosessere de fremtatte data fra den bestemte tidligere ramme, for å redusere verdier som representeres av disse data og frembringe en ramme med data for bruk som den aktuelle ramme.
Ytterlige særtrekk ved oppfinnelsens apparat vil fremgå av patentkravene 2-10.
Oppfinnelsen gjelder som nevnt også en fremgangsmåte, særlig slik det fremgår av patentkrav 11 og som er kjennetegnet ved mottaking av slike rammer, generering av en indikasjon på en eventuell rammeunormalitet i en aktuell ramme, lagring av data for minst én tidligere ramme og overføring av disse data fra en bestemt tidligere ramme i respons på indikasjonen av en rammefeil, prosessering av disse data fra den bestemte tidligere ramme i respons på indikasjonen at en rammeunormalitet, for å redusere verdier som representeres av disse data, og frembringelse av en ramme for bruk som den aktuelle ramme med data.
Siden denne nye teknikk innebærer at korte pauser i talen blir registrert, vil man ha en redusert effektiv taleaktivitetsfaktor. Taktbestemmelser kan foretas på ramme-til-ramme-basis uten rest eller etterslep slik at datatakten kan senkes i pauser i talen når disse er like korte som rammevarigheten, typisk 20 ms i den foretrukne utførelse. Derfor kan pauser, såsom de som faller mellom de enkelte stavelser i talen, fanges opp. Denne teknikk reduserer taleaktivitetsfaktoren ut over det som tradisjonelt har vært ansett mulig, siden ikke bare lengre pauser mellom talens fraser, men også kortere pauser mellom dens stavelser kan overføres ved lavere overføringshastighet.
Siden taktbestemmelsene utføres på rammebasis vil det ikke bli noen avskjæring av den første del av et ord, slik som i et VAG-system. Bortskjæring av viktige sekvenser først i et ord i et slikt system skjer på grunn av forsinkelser mellom deteksjonen av talen og oppstartingen av utsendelsen av data. Ved å bruke en takt som bestemmes ut fra hvert rammeresultat far man derimot en tale som klinger naturlig ved at samtlige overføringer far naturlig lydkarakter.
I et system hvor vokoderen alltid sørger for signaloverføring av en eller annen art vil talerens bakgrunnsstøy høres hele tiden i mottakerenden, hvorved det fremkommer en mer naturlig bakgrunnslyd også under talepausene. Denne nye teknikk gir altså en myk overgang fra talen til bakgrunnslyden. Det lytteren hører i bakgrunnen under talen vil ikke plutselig endres til en syntesefrembrakt komfortstøy under pausene slik som i VAG-systemene.
Siden bakgrunnsstøyen kontinuerlig vokodes for overføring, kan også interessante hendelser i bakgrunnen overføres med full klarhet. I enkelte tilfeller kan til og med interes-sant bakgrunnsstøy føres til koding ved høyeste takt, for eksempel når noen snakker høyt i bakgrunnen, eller hvis for eksempel et utrykningskjøretøy kjører forbi en bruker som står på et gatehjørne og fører en samtale. Konstant eller langsomt varierende bakgrunnsstøy vil imidlertid bli overført ved lavere takt.
Bruken av talekoding med variabel takt har den lovnad i seg at man kan øke kapasiteten av telefonsystemer som bygger på den såkalte kodedelte multippelaksess (CDMA) med mer enn faktoren 2,0. CDMA og talekoding med variabel takt passer meget godt til hverandre siden man med CDMA får et automatisk fall i interferensnivået mellom kanaler når datatakten for en vilkårlig kanal reduseres. I kontrast til dette kan man betrakte systemer hvor overføringsrammene er bestemt tilordnet, såsom systemene TDMA eller FDMA. For at et slikt system skal kunne unytte fordelen som ligger i et fall i datatakten kreves inngrep utenfra for koordinering av den omfordeling av ubrukte spalter man trenger overfor andre brukere. Den iboende forsinkelse i et slikt skjema impliserer at kanalen bare kan omorganiseres under lange talepauser, og derfor kan man ikke få full utnyttelse av taleaktivitetsfaktoren. Med ekstern koordinering kan man imidlertid utnytte talekoding med variabel takt i andre systemer enn de som hører til kategorien CDMA, på grunn av de andre årsaker som er nevnt.
I et CDMA-system kan talekvaliteten degraderes noe ved tidspunkter hvor man trenger ekstra systemkapasitet. Abstrakt kan dette uttrykkes ved at vokoderen kan betraktes som et sett vokodere i et multippelsystem hvor hver vokoder arbeider med forskjellig takt og med resulterende forskjellig talekvalitet som følge. Talekvalitetene kan således blandes for ytterligere å redusere den gjennomsnittlige takt for dataoverføringen. Eksperimenter har vist at man ved å blande heltakts og halvtakts vokodet tale, dvs. at den maksimalt tillatte datatakt blir variert på ramme-til-ramme-basis mellom 8 og 4 kb/s får den resulterende tale en kvalitet som vil være noe bedre enn en variabel halvtakt og med et maksimum på 4 kb/s, men ikke så god som ved fulltakt, nemlig 8 kb/s ved maksimum.
En telefonsamtale mellom to personer foregår vanligvis slik at bare én person ad gangen fører samtalen. Som en ytterligere funksjon for heldupleks telefonsamband over flere ledd (linksamband) kan man anordne "rate interlock", dvs. gjensidig taktkopling. Dette innebærer at hvis sambandets ene overføringsretning arbeider ved høyeste overføringshastig-het vil overføringen i motsatt retning tvinges til å arbeide ved den laveste. En gjensidig kopling mellom de to sambandsretninger kan ikke garantere mer enn SO % utnyttelse av hver av sambandets retninger. Når imidlertid kanalen "slås av", hvilket er tilfellet for den gjensidige taktkopling for aktivitetsreguleringen er det ingen måte en lytter kan bryte inn i taleoverføringen på for å overta talerollen i sambandet. Den nye taleforbedirngsteknikk tilbyr imidlertid muligheten av gjensidig taktkopling ved hjelp av styresignaler som bestemmer vokodetakten.
Endelig skal bemerkes at man ved å bruke et skjema for talekoding med variabel takt rar den fordel at signalinformasjon kan dele kanalen med informasjon i form av taledata og med et meget redusert tap av talekvalitet. For eksempel kan en høytakts tidsramme deles opp i to deler, halvparten for å sende data med lav takt og halvparten for signaldata. I vokoderen i henhold til den foretrukne utførelsesform har man bare ubetydelig reduksjon i talekvaliteten mellom fulltakts og halvtakts vokodet tale. Av denne grunn vil vokoding av talen ved tavere takt for delt transmisjon med andre data bare føre til en omtrent umerkelig forskjell i talekvalitet på brukersiden.
De enkelte trekk, hensikter og fordeler med den nye taleforbedirngsteknikk vil fremgå av den nå følgende detaljbeskrivelse som støtter seg til de tilhørende tegninger, idet disse bruker samme henvisningstall for samme eller tilsvarende element og hvor: Fig. la-le i grafisk form viser tidsrammer og såkalte underrammer for forskjellig overføringstakt for vokodeanalyse, fig. 2a-2d viser oversiktsskjemaer for bitfordelingen på vokoderutgangen for forskjellige overføringshastigheter eller datatakter, fig. 3 viser et forenklet blokkdiagram over en typisk koder, fig. 4 viser et flytdiagram for gangen i en slik koder, fig. 5 viser et blokkskjema over en typisk dekoder, fig. 6 viser dekoderens flytdiagram, fig. 7a og b sett i sammenheng viser et mer detaljert funksjonsskjema for koderen, fig. 8 viser et blokkskjema over et subsystem for et såkalt Hamming-vindu og autokorrelasjon, fig. 9 viser et blokkskjema over et typisk subsystem for taktbestemmelse, fig. 10 viser et blokkskjema over et typisk subsystem for LPC-analyse, fig. 11 viser et blokkskjema over et typisk subsystem for transformasjon fra LPC til LSP, fig. 12 viser et blokkskjema over et typisk subsystem for LPC-kvantisering, fig. 13 viser et blokkskjema over et typisk subsystem for kombinert LSP-interpolasjon og transformasjon fra LSP til LPC, fig. 14 viser et blokkskjema over den såkalt adaptive kodebok for tonehøydesøk, fig. 15 viser et blokkskjema over en koder/dekoder, fig. 16 viser et blokkskjema over subsystemet for tonehøydesøk, fig. 17 viser et blokkskjema over subsystemet for kodeboksøking, fig. 18 viser et blokkskjema over subsystemet for det man kan kalle "datapakking", fig. 19 viser et mer detaljert funksjonsskjema over dekoderen, fig. 20a-20d viser skjemaer over de forskjellige mottatte dekoderparametere og underrammenes de-kodedata for forskjellige oveirføringshastigheter, fig. 21a-21c viser skjemaer over ytterligere mottatte dekoderparametere og underrammedekodedata for spesielle betingelser, fig. 22 viser et blokkskjema over et subsystem for invers LSP-kvantisering, fig. 23 viser et blokkskjema over detaljer for dekoderen med postfiltrering og AGC (automatisk forsterkningsregulering), og fig. 24 viser et diagram over karakteristikken av et filter for adaptiv "lyshet".
I samsvar med den nye teknikk blir lyder såsom tale og/eller bakgrunnsstøy avtastet (samplet) og omgjort til digital form (digitalisert) ved hjelp av allerede kjent teknikk. For eksempel kan det i utgangspunktet analoge lydsignal etter omdannelse til et elektrisk signal konverteres til digitalt format i henhold til standarden 8 bit/mikroinstruksjon (jdaw) fulgt av en omvandling fra mikroinstruksjonen og til UC (uniform code). I et alternativ kan analogsignalet direkte omvandles til digital form i et standardisert og uniformt pulskode-modulasjonsformat (PCM-format). Hver sampleverdi i den foretrukne utførelse representeres følgelig av ett 16 bits dataord. Sampleverdiene ordnes i rammer med inngående data, idet hver ramme er bygget opp av et bestemt antall sampleverdier. I en typisk utførelse av den nye teknikk benyttes 8 kHz samplingstakt. Hver ramme har 160 sampleverdier som tilsvarer 20 ms tale ved den gitte takt på 8 kHz. Det er klart at også andre samplingstakter og rarnmestørrelser kan komme på tale.
Det tekniske område som gjelder vokoding omfatter mange muligheter for talekoding, og en av disse er den kodeteknikk som går under benevnelsen CELP. En oppsummering av CELP-kodeteknikken er beskrevet i det allerede nevnte litteratursted "A 4.8 kbps Code Excited Linear Predictive Coder". Denne nye teknikk bruker også en slags CELP-kodeteknikk for å gi variabel overføringshastighet for de kodede taledata, idet en LPC-analyse utføres for et konstant antall sampler, og både tonehøyde- og kodeboksøk blir utført for et varierende antall sampleverdier i avhengighet av overføringshastigheten. I det foreliggende konsept brukes CELP-kodeteknikk på den måte som vil bli gjennomgått i forbindelse med fig. 3 og 5.
I den foretrukne utførelse av den nye teknikk er taleanalyserammene 20 ms lange, hvilket betyr at de uttrukne parametere overføres i pulsfølger 50 ganger pr. sekund. Videre varieres datatakten fra omkring 8 til 4 til 2 kb/s, og til 1 kb/s. Ved full takt (også angitt som rate 1) skjer overføringen ved 8,55 kb/s og med parametrene kodet for hver ramme tilordnet 171 bit, omfattende en kontrollsekvens på 11 bit som gjelder en intern syklisk redundanskontroll (CRC). Når denne sekvens unntas ville takten være 8 kb/s. Ved halv takt
(også angitt som rate Vi) holdes dataoverføringen ved 4 kb/s og med 80 bit for koding av parametrene for hver ramme. Ved kvart takt (også angitt som rate Vi) skjer dataoverføringen ved 2 kb/s og med 40 bit anvendt for parameterkoding i hver ramme. Ved 1/8 takt (også angitt som rate 1/8) skjer datatransmisjonen ved noe under 1 kb/s og med 16 bit anvendt for hver rammes parameterkoding.
I fig. 1 viser de fem delfigurer en typisk analyseramme 10 for taledata og dennes rammes forhold til et såkalt Hamming-vindu 12 kjent fra LPC-analyse (som tidligere nevnt: lineær prediktiv koding). LPC-analysens ramme og underrammer for talesambandets tonehøyde (pitch) og såkalte kodebok for de forskjellige overføringshastigheter er illustrert grafisk på fig. 2a-2d. På figurene har analyserammen for LPC samme størrelse for alle over-føringshastigheter.
Vender vi tilbake til fig. la fremgår at LPC-analysen utføres ved å bruke 160 taledatasampler i rammen 10 som oppdeles i vinduer ved hjelp av Harnming-vinduet 12. Det fremgår at samplingsrammen er oppdelt i sampler s(n) som er nummerert fra 0 til 159 innenfor hver ramme. Harnming-vinduet 12 blir plassert slik at det ligger forskjøvet i rammen 10 så mye som 60 sampler. Følgelig starter vinduet 12 ved det 60. sampel, s(59) i den aktuelle dataramme 10 og fortsetter utover i den etterfølgende ramme 14 frem til og med denne sampel s(58), idet dette er den 59. i denne ramme. De veide data som frembringes for en bestemt ramme, i dette tilfelle den aktuelle ramme 10 vil følgelig også inneholde data som stammer fra den neste ramme, nemlig rammen 14 i eksempelet.
I avhengighet av dataoverføringstakten utføres søk for å beregne uttrekkspara-metrene for tonehøydefilteret og kodeboken en rekke ganger for forskjellige underrammer fra datarammen 10 slik det fremgår av fig. lb-le. I den foretrukne utførelse velges bare en bestemt takt for rammen 10 slik at tonehøyde- og kodeboksøket utføres i underrammen med forskjellig størrelse tilsvarende den bestemte takt, slik det fremgår av beskrivelsen nedenfor. For å illustrere dette bedre i fig. lb-le er oppbyggingen av underrammene for disse søk vist for de forskjellige tillatte takter i henhold til den foretrukne utførelse for rammen 10.
Ved samtlige takter eller overføringshastigheter foreligger en enkelt LPC-beregning pr. ramme 10 slik det fremgår av fig. la. Fig. 1 viser situasjonen ved full takt, idet det er to kodebokunderrammer 18 for hver tonehøydeunderramme 16. Ved full takt er det altså fire oppdateringer av tonehøyden, én for hver av underrammene 16, hver 40 sampler lang (5 ms). Videre oppdateres kodeboken åtte ganger ved full takt, én gang for hver av de åtte underrammer 18, og hver er 20 sampler lang (2,5 ms). Ved halv takt slik det fremgår av fig. le har man to kodebokunderrammer 22 for hver tonehøydeunderramme 20, tonehøyden oppdateres to ganger, én for hver av de to underrammer, mens kodeboken oppdateres fire ganger, én for hver av de fire kodebokunderrammer 22. Ved kvart takt slik det er vist på fig, Id har man to kodebokunderrammer 26 for hver tonehøydeunderramme 20. Tonehøyden oppdateres én gang for underrammen 24, mens kodeboken oppdateres to ganger, én for hver av dennes to underrammer 26. Som vist på fig. le bestemmes ikke tonehøyden ved 1/8 takt, og kodeboken oppdateres bare én gang i underrammen 28 som i dette tilfelle blir en full ramme og tilsvarer rammen 10.
I tillegg kan man ordne seg slik at selv om LPC-koefifsientene beregnes bare én gang pr. ramme vil de interpoleres lineært i LSP-representasjon (linjespektralpar), opp til fire ganger ved å bruke de resulterende LSP-frekvenser fira den tidligere ramme for tilnærmet å sammenholde resultatet av LPC-analysen med Harnming-vinduet som er sentrert i hver underramme. Unntaket er at ved full takt blir ikke LPC-koeffisientene interpolert for kodebokunderrammene. Ytterligere detaljer ved LSP-frekvensberegningen vil fremgå av den senere del av beskrivelsen.
I tillegg til å utføre tonehøyde- og kodeboksøk sjeldnere ved lavere takt, allokeres også færre bit for overføringen av LPC-koeffisientene. Det allokerte antall ved de forskjellige takter eller rater er vist på fig. 2a-2d. Hver av figurene viser antallet vokoderkodede databit som allokeres til hvert av de 160 sampler i talerammen. Antallet i hver av LPC-blokkene øverst i hvert av figurenes diagram er antall bit brukt ved den aktuelle takt for å kode korttids LPC-koefifsientene. I den foretrukne utførelse er antall bit brukt for å kode LPC-koefifsientene ved full, halv, kvart og 1/8 takt hhv. 40,20,10 og 10.
For koding med variabel takt transformeres først LPC-verdiene til LSP-verdier som så enkeltvis kodes i kodere for differensiell pulskodemodulasjon (DPCM). LPC-ordenen er 10 slik at det vil foreligge ti LSP-frekvenser og ti uavhengige DPCM-kodere. Bitallokeringen for DPCM-kodeme er i henhold til tabell I nedenfor:
Både i koderen og dekoderen omdannes LSP-frekvensene tilbake til LPC-filterkoef-fisienter før bruken i tonehøyde- og kodeboksøket.
Med hensyn til den første av disse søk, beregnes tonehøydeoppdateringen ved full takt slik som illustrert på fig. 2a fire ganger, én gang for hver kvadrant i talerammen. For hver oppdatering av tonehøyden ved full takt brukes 10 bit for å kode de nye tonehøydepara-metere. Tonehøyden oppdateres et forskjellig antall ganger for de øvrige taktforhold slik som vist på fig. 2b-2d. Etter hvert som takten reduseres reduseres også tone-høydeoppdateringen. Fig. 2b illustrerer tonehøydeoppdateringen for halv takt, idet dette altså skjer to ganger, én gang for hver halvdel av talerammen. Tilsvarende viser fig. 2c at tone-høyden oppdateres én gang for hver ramme ved kvart takt. På samme måte som for full takt brukes 10 bit for å kode de nye tonehøydeparametere for både halv takt og kvart takt ved tonehøydeoppdateringen. For åttedels takt slik det er vist på fig. 2d beregnes imidlertid ingen tonehøydeoppdatering siden denne takt brukes for å kode rammer når det er lite eller ingen tale i kanalen og det ikke foreligger noen tonehøyderedundans.
For hver av de 10 bit som medgår til tonehøydeoppdateringen representerer 7 bit senket tonehøyde og 3 bit hevet. Senkningen begrenses til å ligge mellom 17 og 143, mens hevingen kvantiseres lineært til mellom 0 og 2 ved å anvende de tre tilgjengelige bit.
Når det gjelder kodeboksøket vises ved full takt på fig. 2a at oppdateringen utføres åtte ganger, én gang for hver av talerammens åttedeler. Hver gang kodeboken oppdateres ved fiill takt brukes 10 bit for koding av nye parametere, og oppdateringen utføres et forskjellig antall ganger i de øvrige takter som er angitt på fig. 2b-2d. Etter hvert som takten reduseres blir også kodebokoppdateringen redusert tilsvarende, idet fig. 2b illustrerer kodebokoppdateringen for halv takt, nemlig fire ganger, én gang for hver av talerammens firedeler eller kvadranter. Fig. 2c viser at kodebokoppdateringen for kvart takt utføres to ganger, én for hver halvdel av talerammen, og på samme måte som for full takt brukes 10 bit for koding av de nye kodebokparametere. Endelig viser fig. 2d kodebokoppdateringen for åttedels takt, idet oppdateringen skjer hver hele taleramme. Det skal bemerkes at 6 bit brukes, hvorav 2 representerer kodebokvinning eller -supplement, mens de øvrige 4 bit er tilfeldige. Videre utredning av bitallokeringen for kodebokoppdateringen vil bli beskrevet nedenfor.
De bit som allokeres for kodeboken og dennes oppdatering angir de som trengs for vektorkvantisering av den gjenværende del etter tonehøydeprediksjonen (residualverdien). For hel, halv og kvart takt består kodebokoppdateringen av 7 bit som gjelder det man kan kalle kodebokindeksen, og de 3 resterende bit gjelder vinningen, ut fra de totale 10 bit. Vinningen kodes ved hjelp av DPCM (differensiell pulskodemodulasjon) ved hjelp av en koder som arbeider i logaritmisk modus eller domene. Selv om en tilsvarende bitkonfigurasjon kan brukes for åttedels takt foretrekkes et alternativt skjema hvor kodebokvinningen angis med 2 bit, mens 4 tilfeldig frembrakte bit brukes sammen med de mottatte data som en "kime" for en PRN-generator som erstatter kodeboken, idet det med forkortelsen PRN angis at generatoren frembringer tilnærmet tilfeldige tall (pseudorandom numbers).
Idet det vises til det kodeblokkdiagram som fremgår av fig. 3 skal nevnes at LPC-analysen utføres i åpen sløyfe. Fra hver ramme med innkommende talesampler s(n) beregnes LPC-koefifsientene (ai-osio) i en krets 50 for LPC-analyse/kvantisering for bruk i et etterfølgende formantsyntesefilter 60.
Beregningen i tonehøydesøket utføres imidlertid i lukket sløyfe, og denne operasjon kalles ofte metoden for analyse ved syntese. Ifølge oppfinnelsen brukes en videreføring med en "hybridteknikk" med en kombinasjon av lukket og åpen sløyfe. Kodingen for tone-høydesøket utføres ved å velge parametere som reduserer middelkvadratawiket mellom den innkommende tale og den syntesefrembrakte. For enkelhets skyld under denne forklaring tas ikke takten eller overføringshastigheten med i betraktningen. I den senere del av beskrivelsen blir dette imidlertid belyst i nærmere detalj.
I den oppstilling som er vist på fig. 3 benyttes et persepsjonsveiefilter 52 som har følgende overføringsfunksjon: angir formantprediksjonsfiltreringen, mens \ l er en perseptiwektparameter som i eksempelet er 0,8.Oppstillingen omfatter et tonehøydesyntesefilter 58 vist i sentrum og med følgende overføringsfunksjon:
Oppstillingens formantsyntesefilter 60 er også et veiefilter, slik det fremgår av beskrivelsen nedenfor, og dette filteret har overføringsfiinksjonen:
De innkommende talesampler s(n) veies i filteret 52 slik at de veide talesampler x(n) summeres i den viste summeringskrets 62. Perseptiweining brukes for å tillegge avviket eller feilen ved frekvenser hvor det er mindre signaleffekt enn annen vekt. Det er ved slike frekvenser at støyen gjør seg mest gjeldende hos mottakeren. De syntetiserte talesampler x'(n) føres fra syntesefilteret 60 for formantene til en subtraksjonsinngang på summeringskretsen 62 slik at de blir trukket fra samplene x(n). Forskjellen i sampelutgang fra kretsen 62 føres til en middelkvadratawikskrets 64 (kretsen MSE) for kvadrering og summering. Utgangen fra MSE-kretsen 64 går til en minimaliseirngskrets 66 som frembringer verdier for tonehøydesenkning L, heving b, kodebokindeks I og -vinning.
I kretsen 66 sørges for at alle positive verdier for L, tonehøydesenkningspara-meteren i funksjonen P(z), føres til syntesefilteret 58 sammen med verdien c(n) fra et multiplikatortrinn 56. Under tonehøydesøket kommer det ikke noe bidrag fra kodeboken, dvs. c(n) = 0. Verdiene av L og b som reduserer det veide avvik mellom den innkommende tale og den syntetiserte blir valgt av kretsen 66, mens tonehøydesyntesefilteret 58 frembringer og fører ut den verdi p(n) som skal til for syntesefilteret 60. Når først verdiene L og b for tonehøydefilteret er funnet utføres kodeboksøket på tilsvarende måte.
Det bør være klart at fig. 3 bare viser et skjematisk og tenkt tilfelle av oppfinnelsens løsning for analyse ved syntese. I et konkret eksempel brukes ikke filtrene i den typiske tilbakekopling med lukket sløyfe, men tilbakekoplingen brytes under søket og erstattes med en formantresidualkopling med åpen sløyfe, slik det vil bli forklart senere. Minimaliseirngskretsen 66 frembringer verdier for kodebokindeksen I og -vinningen G. Utgangsverdiene fra oppstillingens kodebok 54 (feilaktig som angitt som 58 i originaltegningene), valgt fra en rekke tilfeldig fordelte Gauss-vektorverdier i henhold til kodebokindeksen I multipliseres i multiplikatoren 56 med kodebokvinningen G for å frembringe den sekvens av verdier c(n) som brukes i tonehøydesyntesefilteret 58. For over-føringen velges den kodebokindeks I og den vinning G som reduserer middelkvadratawiket.
Man skal videre merke seg at perseptiweining W(z) utføres for både den innkommende tale (ved hjelp av filteret 52) og den syntetiserte tale (med den veiefunksjon som utføres av formantsyntesefilteret 60. Sistnevnte er derfor i virkeligheten et syntesefilter for formantveining og som kombinerer veiefunksjonen i henhold til ligning 1 med den typiske filterkarakteristikk for formantprediksjonsfiltreringen 1/A(z), hvilket som resultat fører til ligning 3 og dennes veide formantsyntesefunksjon.
Man kan alternativt legge filteret 52 mellom summeringskretsen 62 og MSE-kretsen 64, og i et slikt tilfelle vil formantsyntesefilteret 60 ha den normale filteroverføirngsfUnksjon 1/A(z).
Fig. 4 viser et flytdiagram over de trinn som inngår i kodingen av tale ved hjelp av koderen vist på fig. 3. For å lette forståelsen er de trinn som involverer taktbestemmelsen også innbefattet i flytdiagrammet på fig. 4. De digitaliserte talesampler frembringes i blokk 80 fra samplingskretsene, og i den etterfølgende blokk 82 beregnes LPC-koefifsientene. Hamming-vindu- og autokonelasjonsteknikk benyttes blant annet under denne beregning. Deretter utføres en første taktbestemmelse i blokk 84 på den aktuelle ramme, ut fra rammeenergien i den foretrukne utførelse.
For å kunne utføre effektiv koding av LPC-koefifsientene ved hjelp av et relativt lite antall bit transformeres de til LSP-frekvenser i blokk 86 og kvantiseres deretter i blokk 88 for overføring. Som et tilleggsvalg er satt opp en blokk 90 for en ytterligere taktbestemmelse og med en økning av takten hvis kvantiseringen av LSP-frekvenser for den opprinnelig bestemte takt viser seg eller bedømmes å være utilstrekkelig (blokk 92).
For den første tonehøydeunderramme i talerammen som analyseres interpoleres LSP-frekvensene og transformeres til LSP-koefiisienter i blokk 94 for bruk under utførelse av tonehøydesøket. I dette settes kodebokeksiteringen til null og i selve søket (blokk 96 og 98) som i realiteten er en analyse ved syntese slik som tidligere nevnt sammenlignes den syntetiserte tale for hver mulig tonehøydesenkning L med den opprinnelige tale. For hver av verdiene L (hettallsverdier) bestemmes den optimale tonehøydeheving b. Ut fra de oppnådde sett med samhørende L- og b-verdier gir det optimale sett den minste oppfattede middelkvadratfeil mellom den syntetiserte tale og den opprinnelige. Den således bestemte optimale kombinasjon av L og b for den aktuelle tonehøydeunderramme kvantiseres verdien b i blokk 100 for overføring sammen med den tilhørende L-verdi. I en alternativ utførelse av tonehøydesøket kan verdiene b være kvantiserte verdier, idet en del av tonehøydesøket med nettopp disse verdier blir brukt i løpet av søkingen. Således behøver man ikke ha noen kvantisering av de valgte b-verdier etter at søkingen i blokk 100 er utført.
For den første kodebokunderramme av talerammen under analyse blir LSP-frekvensene interpolert og transformert til LPC-koeffisienter i blokk 102 for anvendelse ved ut-førelsen av kodeboksøket. I eksempelet interpoleres imidlertid ved rull takt bare LSP-frekvensene ned til nivået for tonehøydeunderrammen, og denne interpolasjon og transformasjon utføres for søket i tillegg til tilsvarende for tonehøydesøket ut fra en forskjell i størrelse for underrammene for hver av taktene, med unntak av åttedelstakten hvor resultatet er vilkårlig eller irrelevant siden ingen tonehøydedata beregnes. Under kodeboksøket, blokk 104 og 106 brukes verdiene L og b i tonehøydesyntesefiltreringen slik at den syntesefrembrakte tale for hver mulig kodebokindeks I sammenlignes med den opprinnelige tale. For hver verdi av I, en heltallsverdi, bestemmes den optimale kodebokvinning G. Av de sett av I- og G-verdier som fremkommer vil det optimale sett være det som gir minimalt avvik mellom den opprinnelige tale og den syntetiserte. Verdien G kvantiseres i blokk 108 for det bestemte optimale sett av I og G for den bestemte kodebokunderramme, for overføring sammen med den tilhørende I-verdi. På tilsvarende måte som gjennomgått ovenfor kan alternativt verdiene av G kvantiseres som en del av kodeboksøket, idet disse kvantiserte verdier inngår. I den alternative utførelse vil det ikke være behov for kvantisering av den valgte G-verdi etter at søket i blokk 108 er utført.
Deretter gjennomkjøres en dekoder innbefattet i koderen med de optimale verdier for I, G, L og b. Denne prosess rekonstruerer koderens fUterlager for bruk i senere underrammer.
Deretter utføres en kontroll (blokk 110) for å bestemme om kodebokunderrammen som analysen nettopp ble utført i var den siste underramme i settet og tilsvarende tonehøyde-underrammen som tonehøydesøket ble utført for. Med andre ord utføres en bestemmelse av om det foreligger flere kodebokunderrammer som tilsvarer tonehøydeunderrammen. I eksempelet er det bare to kodebokunderrammer pr. tonehøydeunderramme og hvis det blir bestemt at det skulle være en annen kodebokunderramme som tilsvarer tonehøydeunder-rammen kommer trinn 102-108 til å gjentas for denne kodebokunderramme.
Hvis det imidlertid ikke foreligger noen flere kodebokunderrammer som tilsvarer tonehøyderammen utføres en kontroll (blokk 112) for å bestemme om det foreligger noen andre tonehøydeunderrammer innenfor den taleramme som er under analyse. Hvis så er tilfelle gjentas trinn 94-110 for hver tonehøydeunderramme og tilsvarende kodebokunderrammer. Når samtlige beregninger for den aktuelle taleramme under analyse er utført sammenholdes eller "pakkes" de verdier som angir LPC-koefifsientene for talerammen, tonehøydesenkningen L og -hevingen for hver tonehøydeunderramme, og kodebokindeksen I og -vinningen G for hver kodebokunderramme, denne samling av verdier gjøres ved dette klar for overføring, hvilket er indikert i blokk 114 i diagrammet.
Det vises nå til fig. 5 som illustrerer oppbyggingen av en dekoder hvor de mottatte verdier for LPC-koeffisientene (o$-verdier), tonehøydesenkninger og -hevinger (L og b) og kodebokindekser og -vinninger (I og G) brukes for å syntetisere talen. Fig. 5 viser som fig. 3 at taktinformasjonen ikke tas hensyn til for å gjøre beskrivelsen enklere. Datataktinforma-sjonen kan i stedet sendes som side- eller tilleggsinformasjon og i enkelte tilfeller utledes i kanaldemodulasjonstrinnet.
Dekoderen består av en kodebok 130 som tilføres kodebokindekser ved mottakingen, eller for åttedels takt, den tilfeldige "seed". Utgangen fra kodeboken 130 føres til inngangen av en multiplikator 132 hvis andre inngang mottar kodebokvinningen G. Multiplikatorens utgang 132 viderefører verdiene L og b til det etterfølgende tone-høydesyntesefilter 134 hvis utgang føres sammen med LPC-koefifsientene o$ til et formantsyntesefilter 136. Dettes utgang fører til et adaptivt postfilter 138 hvor den rekonstruerte tale føres ut i filtrert form. Som gjennomgått senere er en versjon av dekoderen implementert i koderen og innbefatter intet adaptivt postfilter 138, men i stedet et perseptiweiefilter.
Fig. 6 viser et flytdiagram for gangen gjennom dekoderen vist på fig. 5.1 dekoderen rekonstrueres tale fra de mottatte parametere (blokk 150). Særlig føres den mottatte verdi av kodebokindeksen til inngangen av kodeboken som på sin side frembringer en kodevektor eller en kodebokutgangsverdi i blokk 152. Multiplikatoren mottar kodevektoren sammen med den mottatte verdi G og multipliserer disse verdier i blokk 154 med det resulterende signal som er ført til tonehøydesyntesefilteret. Det skal bemerkes at kodebokvinningen G rekonstrueres ved dekoding og invers kvantisering av de mottatte DPCM-parametere. Tonehøydesyntesefilteret tilføres de mottatte verdier L og b sammen med multipli-katorutgangssignalet for å filtrere multiplikatorutgangen (blokk 156). De verdier som fremkommer ved filtreringen av kodebokvektoren av tonehøydesyntesefilteret føres til inngangen av formantsyntesefilteret. Til dette føres også LPC-koefifsientene o; for bruk ved filtreringen av tonehøydesyntesefilterets utgangssignal (blokk 158). LPC-koeffisientene rekonstrueres i dekoderen for interpolasjon ved dekoding av de mottatte DPCM-parametere til kvantiserte LSP-frekvenser ved invers kvantisering av disse og transformasjon av dem til LPC-koefifsientene 04. Utgangen fra formantsyntesefilteret føres til det adaptive postfilter hvor kvantiseringsstøyen maskeres, og den rekonstruerte tale kontrolleres deretter med hensyn til vinning eller forsterkning i blokk 160. Den rekonstruerte tale føres ut (blokk 162) for omvandling til analog form.
Det vises nå til blokkdiagrammet på fig. 7a og 7b, og ytterligere detaljer som har med talekodeteknikken i henhold til oppfinnelsen skal gjennomgås. På fig. 7a føres hver ramme av digitaliserte talesampler til et Hamming-vindusubsystem 200 hvor den innkommende tale avgrenses for beregningen av autokorrelasjonskoeffisientene i det etterfølgende autokorrelasjonssubsystem 202.
Hamming-vindusubsystemet 200 og autokorrelasjonssubsystemet 202 er illustrert i form av et eksempel på fig. 8. Det første subsystem 200 består av en oppslagstabell 250, typisk i form av en 80x16 bit ROM og en multiplikator 252. For hver takt sentreres talevinduet mellom den 139. og den 140. sampel i hver analyseramme som er totalt 160 sampler lang. Vinduet for å beregne autokorrelasjonskoeffisientene blir således forskjøvet fra analyserammen med i alt 60 sampler. Vindusavgrensning utføres ved hjelp av en ROM-tabell som inneholder 80 av de 160 Wn(n)-verdier siden Harnming-vinduet er symmetrisk i forhold til sentrum. Forskyvningen av Harnming-vinduet utføres ved å skjevstille adressepekeren i ROM så mye som 60 posisjoner i forhold til den første sampel i analyserammen. Disse verdier multipliseres i enkeltpresisjonsmodus med de tilsvarende innkommende talesampler i multiplikatoren 252. Lar vi s(n) være inngangstalesignalet i analysevinduet vil de vindusavgrensede talesignal sw(n) defineres som:
Typiske verdier angitt i heksadesimal notering av innholdet i oppslagstabellen 250 fremgår av tabell II nedenfor. Verdiene kan tolkes som 2 sitt komplementære tall med 14 fraksjonsbit og med tabellen lest fra venstre mot høyre øverst og nedover:
Subsystemet 202 består av et register 254, en multipleksenhet 256, et skiftregister 258, en multiplikator 260, en summekrets 262, et sirkulært skiftregister 264 og en buffer 266. De vindusavgrensede talesampler sw(n) beregnes hvert 20. ms og holdekoples til registeret 254. Ved samplet sw(0) tilbakestilles det første sampel i en LPC-analyseramme, skiftregistrene 258 og 264 til 0. Ved hvert nytt sampel sw(n) mottar multipleksenheten 256 et nytt sampelvalgsignal som tillater at samplet kan føres fra registeret 254. Det nye sampel Sw(n) føres altså til multiplikatoren 260 og multipliseres av samplet sw(n-10) som ligger i den siste posisjon SR10 i skiftregisteret 258. Den resulterende verdi adderes i summeringskretsen 262 med verdien i siste posisjon CSR11 i det sirkulære skiftregister 264.
Skiftregistrene 258 og 260 erstatter ved én klokketakt Sw(n-l) med sw(n) i den første posisjon SRI i skiftregisteret 258 og erstatter den tidligere verdi i posisjon CSR10. Ved taktpåtrykk (klokking) til skiftregisteret 258 føres det nye sampelvalgsignal fra inngangen og til multipleksenheten 256 slik at samplet Sw(n-9) som til da har hatt posisjon SR10 t skiftregisteret 260 tillates å overføres til multipleksenheten 256.1 det sirkulære skiftregister 264 forskyves den verdi som tidligere var i posisjon CSR11 til den første posisjon CSR1. Med det nye sampelvalgsignal tatt ut fra multipleksenheten frembringer skiftregisteret 258 en sirkulær forskyvning av sine data på tilsvarende måte som det som foregår i det sirkulære skiftregister 264.
Både skiftregisteret 258 og registeret 264 klokkes 11 ganger totalt for hvert sampel slik at det utføres 11 operasjoner multiplikasjon/akkumulering. Etter klokking av 160 sampler blir autokorrelasjonen som inneholdes i det sirkulære skiftregister 264 klokket inn i bufferen 266 som verdiene R(0) - R(10). Samtlige skiftregistere nullstilles og prosessen gjentas for neste ramme med vindusavgrensede sampler.
Det vises igjen til fig. 7a for forståelse av at når autokorrelasjonskoeffisientene er beregnet for den aktuelle taléramme blir de fremkomne data brukt i et taktbestemmelses-subsystem 204 og et LPC-analysesubsystem 206 for henholdsvis beregning av en rammes datatakt og dens LPC-koeffisienter. Siden disse operasjoner er innbyrdes uavhengige kari de beregnes i vilkårlig rekkefølge og dessuten samtidig. Av hensyn til gangen i beskrivelsen vil taktbestemmelsen først gjennomgås: Taktbestemmelsessubsystemet 204 har to funksjoner: (1) å bestemme takten av den aktuelle ramme, og (2) å beregne et nytt estimat for bakgrunnsstøynivået. Rammetakten bestemmes i utgangspunktet ut fra rammens energi, det tidligere oppsatte estimat for bak-grunnssøtynivået, den tidligere takt og taktkommandoen fra en overvåkende og styrende mikroprosessor. Det nye bakgrunnsstøynivå estimeres ved å gjøre bruk av det tidligere estimat og den aktuelle rammeenergi.
Denne oppfinnelse bruker en adaptiv terskelteknikk for taktbestemmelsen. Siden bakgrunnsstøyen endrer seg vil også de terskler som benyttes for å velge takten endre seg. I det eksempel som her brukes vil tre terskler beregnes for å bestemme et forhåndstaktvalg RTP. Tersklene er kvadratfunksjoner av de tidligere bakgrunnsstøyestimater og er vist neden-' for:
hvor B er det tidligere estimat for bakgrunnsstøyen.
Rammeenergien sammenlignes med de tre terskler T1(B), T2(B) og T3(B). Hvis den er under samtlige tre terskler velges den laveste overføringstakt eller -hastighet (1 kb/s), dvs. åttedels rate, hvor RTP = 4. Hvis rammeenergien ligger under to av tersklene velges den andre takt (2 kb/s), kvart rate, idet RTP = 3. Hvis derimot rammeenergien bare er under én av tersklene velges den tredje takt (4 kb/s), halv rate, idet RTP = 2. Hvis endelig rammeenergien ligger over samtlige terskler vil den høyeste takt eller overføringshastighet velges (8 kb/s), dvs. hel takt og RTP= 1.
Den forhåndsestimerte takt RTP kan deretter modifiseres ut fra den tidligere rammes endelige takt RTr. Hvis RTP < (RTr -1) settes opp en mellomtakt RTm hvor: RTm< (RTr -1). Denne modifiserte prosess bevirker at takten langsomt reduseres når det finner sted en overgang fra et høyenergisignal og til et lavenergisignal. Skulle imidlertid det første taktvalg være det samme eller større enn den tidligere takt minus én (RTr-1), settes RTm = RTp. I denne situasjon må takten umiddelbart økes når det finner sted en overgang fra et lavenergisignal og til et høyenergisignal.
Endelig modifiseres mellomtakten RTm i tilfelle mikroprosessoren sender ut taktgrensesignaler. Hvis takten RTm er større enn den høyeste takt som tillates av mikroprosessoren vil en første takt RTj nettopp settes til denne verdi. Tilsvarende vil RT; settes til den lavest tillatte verdi hvis mellomtakten RTra er mindre enn den laveste takt som tillates av mikroprosessoren.
I enkelte tilfeller kan det være ønskelig å kode all tale ved en takt som bestemmes av mikroprosessoren. Taktgrensesignalene kan i så fall brukes for å bestemme rammetakten til å være lik den ønskede takt ved å sette både den maksimale og den minimale tillatte takt til den ønskede. Taktgrensesignalene kan brukes for spesielle taktreguleringssituasjoner såsom taktmellomlåsing, såkalt dim- og burst-transmisjon, idet disse benevnelser skal forklares nærmere senere.
Fig. 9 viser et eksempel på algoritmen for taktbestemmelse. Det hele startes ved at et register 270 innleses med verdien 1 som så føres til en summeringskrets 272. De viste sirkulære skifiregistere 274,276 og 278 tilføres hhv. den første, andre og tredje koeffisient i de kvadratiske terskelligninger (7)-(9). For eksempel vil den siste, den midtre og den første posisjon i det sirkulære skiftregister 274 fa innlest den første koeffisient i ligningene som Tl, T2 og T3 beregnes ved hjelp av. Tilsvarende leses de andre koeffisienter i ligningene som disse verdier beregnes fra inn i den siste, midtre, hhv. første posisjon i det sirkulære skiftregister 276. Endelig leses konstantleddet i ligningene som verdiene beregnes ut fra inn i hhv. den siste, midtre og første posisjon i det sirkulære skiftregister 278. I hvert av de sirkulære skiftregistere 274,276 og 278 føres verdien ut fra den siste posisjon.
Ved beregning av den første terskel Tl kvadreres det tidligere bakgrunnsstøyestimat B i rammen ved å multiplisere verdien med seg selv i multiplikatoren 280. Den resulterende B<2->verdi multipliseres med den første koeffisient minus 5,544613-10"<*> som er resultatet fra siste posisjon i det sirkulære skiftregister 274. Denne resulterende verdi summeres t summeringskretsen 286 med produktet av bakgrunnsstøyen B og den andre koeffisient 4,047152 fra den siste posisjon i det sirkulære skiftregister 276, fra multiplikatoren 284. Utgangsverdien fra summeringskretsen 286 summeres deretter i en summeringskrets 288 med et konstant ledd 363,1293 som kommer ut fra den siste posisjon i det sirkulære skiftregister 278. Utgangen fra summeringskretsen 288 er derved den beregnede verdi av terskelen Tl.
Denne beregnede verdi av Tl fra summeringskretsen 289 trekkes fra i summeringskretsen 288 fra rammeenergiverdien Ef som i eksempelet er verdien R(0) i det lineære område ut fra autokorrelasjonssubsystemet.
I en alternativ utførelse kan også rammeenergien Ef representeres i et logaritmisk domene eller plan og uttrykkes i desibel (dB) under tilnærmelse til logaritmen av den første autokorrelasjonskoeffisient R(0) normalisert med den effektive vinduslengde:
hvor La er autokorrelasjonsvinduslengden. Det er videre klart at taleaktivitet også kan måles ved hjelp av forskjellige andre parametere, innbefattet tonehøydeprediksjonsøkning eller
-vinning eller formantprediksjonsøkning Ga:
hvor E<*l0>) er den residuelle prediksjonsenergi etter den tiende iterasjon, mens E(<0>) er den tilsvarende energi for den innledende LPC, som beskrevet senere i LPC-analysen, hvilket tilsvarer R(0).
Fra utgangen av summeringskretsen 290 trekkes komplementet av fortegnbiten i det resulterende totalis komplementære forskjell i en komparator eller begrenser 292 og føres til summeringskretsen 272 hvor verdien summeres med utgangen fra registeret 270. Hvis således forskjellen mellom R(0) og Tl er positiv inkrementeres registeret 270 med én. Hvis forskjellen derimot er negativ holdes registeirnnholdet uforandret.
De sirkulære registere 274, 276 og 278 omorganiserer deretter sitt innhold i en syklus slik at koeffisientene i ligningen for T2, ligning (8) kommer frem på utgangen. Prosessen med å beregne terskelverdien T2 og sammenligning av denne med rammeenergien gjentas slik det ble gjennomgått i forbindelse med prosessen for terskelverdien Tl. De sirkulære registere 274,276 og 278 omorganiseres på ny slik at koeffisientene i ligningen for T3, ligning (9) kommer på utgangen. Sammenligningen for terskelverdien T3 og sammenligningen med rammeenergien skjer som beskrevet ovenfor. Etter komplettering av samtlige tre terskelberegninger og -sammenligninger kommer registeret 270 til å inneholde det opprinnelige taktestimat RT,. Det foreløpige tilsvarende estimat RTP (idet p står for preliminary) føres til en logisk krets som utfører taktreduksjon (ramp down logic), og denne krets 294 mottar også den tidligere endelige rammetakt RTr fra subsystemet for LSP-frekvenskvantisering, lagret i registeret 298. Den logiske krets 296 beregner verdien (RTr -1) og gir som en utgang den største av RTP eller (RTr - 1). Verdien RTm føres til den logiske krets 296.
Som nevnt tidligere gir mikroprosessoren taktbegrensningssignaler til vokoderen, særlig til den logiske krets 296.1 et digitalt signalprosessorimplement mottas kommandosig-nalene i kretsen 296 før avslutningen av LPC-analysedelen av kodeprosessen. Den logiske krets 296 sørger for at takten ikke overskrider grenseverdiene som er fastlagt og modifiserer verdien RTm i tilfelle den skulle overskride grensene. Hvis derimot verdien ligger innenfor de tillatte grenser vil utgangen fra den logiske krets 296 angi denne verdi som verdien RT, og overføres til subsystemet 210 vist på fig. 7a, for LSP-kvantiseringen.
Bakgrunnsstøyestimatet som brukes, som nevnt tidligere, for beregning av adaptivtakttersklene. For den aktuelle ramme brukes det tidligere rammebakgrunns-støyestimat B ved oppstilling av takttersklene for den aktuelle ramme, men for hver ramme oppdateres estimatet for bruk ved bestemmelse av takttersklene for den neste ramme. Den nye verdi av bakgrunnsstøyestimatet B' bestemmes i den aktuelle ramme ut fra den tidligere verdi for estimatet B og den aktuelle rammeenergi Ef, også nevnt tidligere.
For å bestemme det nye estimat B' for bruk under den neste ramme (på samme måte som bestemmelsen av estimatet B) utføres beregninger av to verdier, nemlig den første verdi Vi som rett og slett er den aktuelle rammeenergi Ef, og en andre verdi V2 som er den største av B+l eller KB, hvor K=l,00547. For å hindre at den andre verdi blir for stor ligger det en restriksjon på den, nemlig at den må ligge under en stor konstant M=l 60.000. Den minste av de to verdier Vj eller V2 velges som det nye bakgrunnsstøyestimat B'.
Matematisk kan dette uttrykkes på følgende måte:
og det nye bakgrunnsstøyestimat B" blir derfor:
hvor min (x,y) er minimalverdien av x og y, og maks (x,y) er maksimum av x og y.
Fig. 9 viser ytterligere en utførelse av algoritmen for bakgrunnsstøyestimeringen. Den første verdi Vi er rett og slett den aktuelle rammeenergi Ef direkte til inngangen av multipleksenheten 300.
Den andre verdi V2 beregnes ut fra verdiene KB og B+l som først beregnes. Ved beregningen av disse verdier føres tidligere estimat B i registeret 302 til summeringskretsen 304 og multiplikatoren 306. Estimatverdien B lagret i registeret 302 for bruk i den aktuelle ramme er altså den samme verdi som det nyte estimat B<*> beregnet for den foregående ramme. Summeringskretsen 304 tilføres også en inngangsverdi på 1 for summering med verdien B slik at det frembringes en verdi B+l. Multiplikatoren 306 tilføres også en inngangsverdi for K for multiplikasjon med B slik at man oppnår KB. Verdiene B+l og KB føres henholdsvis ut fra summeringskretsen 304 og multiplikatoren 306 for å tilføres separate innganger på både multipleksenheten 308 og summeringskretsen 310.
Summeringskretsen 310 og komparatoren eller begrenseren 312 brukes for valg av den største av verdiene B+l eller KB: Summeringskretsen 310 trekker verdien B+l fra KB og gir den resulterende verdi videre til kretsen 312 som tilveiebringer et styresignal til multipleksenheten 308 for å velge en utgang fra denne som er den største av verdiene B+l og KB. Den valgte største verdi fra multipleksenheten 308 føres til begrenseren 314 som er av metningstypen og gir enten den valgte verdi hvis denne verdi ligger lavere enn den konstante verdi M, eller verdien M hvis denne overskrides. Utgangen fra begrenseren 314 føres til den andre inngang på multipleksenheten 300 og som en inngang til summeringskretsen 316.
Summeringskretsen 316 mottar på sin andre inngang rammeenergiverdien Ef, og den, sammen med komparatoren eller begrenseren 318 brukes for å velge den minste av verdien Ef og utgangen fra begrenseren 314. Summeringskretsen 316 trekker rammeenergiverdien fra utgangs verdien fra begrenseren 314 og overfører den resulterende verdi til kretsen 318 som gir et styresignal til multipleksenheten 300 for å velge ut den minste av verdiene Ef og utgangen fra begrenseren 314. Den valgte verdi fra multipleksenheten 300 føres som det nye bakgrunnsstøyestimat B' til registeret 302 hvor verdien lagres forbruk under den neste ramme slik som det tidligere bakgrunnsstøyestimat B i den foregående ramme.
Det vises nå til fig. 7 igjen hvor hver at autokorrelasjonskoeffisientene R(0) - R(10) føres ut fra autokorrelasjonssubsystemet 202 til LPC-analysesubsystemet 206. LPC-koeffisientene blir beregnet i subsystemet 206 i både perseptiweiefilteret 52 og formantsyntesefilteret 60.
Koeffisientene kan fremkomme som følge av den autokorrelasjonsmetode som bruker Durbins rekursjon og slik det er beskrevet i: Digital Processing of Speech Signals, Rabiner & Schafer, Prentice-Hall, Inc., 1978. Denne teknikk er en virkningsfull beregningsmetode for å komme frem til LPC-koeffisientene, og algoritmen kan settes opp i ligningssettet som følger:
De ti LPC-koeffisienter merkes afi0\ for alle heltall j mellom 1 og 10.
Før kodingen av LPC-koeffisientene finner sted må stabiliteten av filteret sikres. Dette utføres ved radial skalering av filterets poler i retning innover og med en mindre verdi som reduserer størrelsen av maksimalfrekvensresponsen under ekspansjon av spissverdienes båndbredde. Denne teknikk kjennes vanligvis som båndbreddeekspansjon og er ytterligere beskrevet i artikkelen "Spectral Smoothing in PARCOR Speech Analysis-Synthesis" av Tohkura et al., ASSP Transactions, desember 1978. I den foreliggende oppfinnelse kan båndbreddeekspansjon effektiv utføres ved skalering av LPC-koeffisient. Slik det er satt opp i Tabell III nedenfor kan de resulterende LPC-koeffisienter hver multipliseres med en tilsvarende heksadesimal verdi for å danne de endelige utgående LPC-koeffisienter arato for LPC-analysesubsystemet 206. Merke at verdiene i Tabell III er gitt i heksadesimal form med 15 fraksjonsbit i tokomplementær notasjon. I denne form blir verdien 0x8000 lik -1,0, mens verdien 0x7333 (eller 29491) angis som 0,899994 = 29491/32768.
Operasjonene utføres fortrinnsvis i henhold til såkalt "dobbelpresisjon" det vil si 32 bits divisjon, multiplikasjon og addisjon. Dobbelpresisjonsnøyaktighet foretrekkes for å opprettholde det fulle dynamiske register for autokorrelasjonsfunksjonene og filterkoeffi-sientene.
Fig. 10 viser et blokkdiagram av et eksempel på en utførelse av LPC-subsystemet 206 som utfører ligningene (15)-(20) ovenfor. Systemet 206 omfatter tre kretsdeler, en hovedberegningskrets 330 og to bufferoppdateringskretser 332 og 334 som brukes for oppdatering av registrene i hovedberegningskretsen 330. Beregningen starter ved først å lese inn verdiene R(1)-R(I0) i bufferen 340. For å starte beregningen forhåndsinnleses verdien R(l) i registeret 348 via multipleksenheten 344. Registeret startes opp med R(0) via multipleksenheten 350, bufferen 352 (som inneholder 10 o/^-verdier) initialiseres til å inneholde bare nuller via multipleksenheten 358, og i settes til 1 for beregningssyklusen. For enkelhets skyld er ikke tellere for i og j og annen beregningssyklus kontroll/styring vist, men opsjonen og integreringen av denne type logiske kretser vil være godt innenfor virkeomfanget for en faglig utdannet person innenfor utvikling av digitale logiske kretser.
Verdien o^1"1* føres ut fra bufferen 256 for å beregne leddet KiE(<l4>) slik det fremgår av ligning (14). Hver verdi R(i-j) føres ut fra bufferen 340 for multiplikasjon med c^<1*1*->verdien i multiplikatoren 360. Hver resulterende verdi trekkes i summeringskretsen 362 fira verdien i registeret 346, og resultatet fra hver subtraksjon lagres i registeret 346 fra hvilket det neste ledd trekkes fra. Det foregår i-l multiplikasjoner og akkumuleringer i den i-te syklus slik det er indikert i summeringsleddet i ligning (14). Ved slutten av denne syklus deles verdien i registeret 346 i delekretsen 364 med verdien fra registeret 348 for å frembringe verdien kj.
Verdien kt brukes deretter i bufferoppdateringskretsen 332 tit å beregne verdien E<fl>) som i ligning (19) ovenfor, og denne verdi brukes som verdien E(<l>"<l>) under den neste beregningssyklus for kj. Den aktuelle syklusverdi kj multipliseres med seg selv i multiplikatoren 366 for å komme frem til verdien kj. Verdien kj trekkes deretter fra verdien 1 i summeringskretsen 368. Resultatet av denne summering multipliseres i multiplikatoren 370 med verdien E<1> fra registeret 348. Den resulterende verdi El føres til registeret 348 via multipleksenheten 350 for lagring som verdien E(<M>) for den neste syklus.
Verdien ki brukes deretter for å beregne verdien cp som i ligning (15). I dette tilfelle føres verdien kj til inngangen av bufferen 356 via multipleksenheten 358. Verdien kj brukes også i bufferoppdateringskretsen 334 for å beregne verdiene o$<w> fra verdiene o( lA) som i ligning (18). Verdiene som under denne periode lagres i bufferen 352 brukes ved beregning av verdiene o$<w>. Som indikert i ligning (18) foreligger i-l beregninger i den i-te syklus. I iterasjonen i = 1 kreves ingen slike beregninger. For hver verdi av j for den i-te syklus beregnes en verdi av oj<w.> Ved beretning av hver verdi av cp multipliseres en verdi av ofc.</1>"<1>' i multiplikatoren 372 med verdien kj for utgang til summeringskretsen 374, og i denne krets trekkes verdien kiO$./l l) fra verdien o/1"0 som også er ført til summeringskretsen 374. Resultatet av hver multiplikasjon og addisjon kommer frem som en verdi av oj<w> til bufferen 356 via multipleksenheten 358.
Når således verdiene cp og OjW er beregnet for den aktuelle syklus eller periode lagres de verdier som er beregnet i bufferen 356 og føres ut til bufferen 352 via multipleksenheten 354. De verdier som ligger lagret i bufferen 356 lagres i tilsvarende posisjoner i bufferen 352, og denne oppdateres deretter for beregning av verdien kj for (i+l)-te syklus.
Det er viktig å merke seg at data o/<1>"<1*> som frembringes ved slutten av den foregående syklus brukes under den påfølgende og aktuelle syklus for å frembringe oppdaterte verdier <xp for den neste periode. Den foregående periodes data må tas vare på for å oppdatere data for den neste periode i komplett form. Således brukes to buffere 356 og 352 for å holde rede' på den foregående periodes data inntil de oppdaterte data er skaffet tilveie for den neste periode.
Beskrivelsen ovenfor er skrevet for parallell overføring av data fra bufferen 356 til bufferen 352 ved avslutning av beregningen av de oppdaterte verdier. Denne implementering sikrer at de gamle data tas vare på under hele prosessen ved beregningen av de nye data, uten at de gamle data tapes før de er utnyttet fullt ut, i motsetning til det som skjer i en krets med en enkelt buffer. Den beskrevne utførelse er én av flere som er tilgjengelige for å oppnå samme resultat, for eksempel kan bufferne 352 og 356 koples i multipleks slik at man ved beregning av verdien kj for en aktuell periode ut fra verdier som ligger lagret i en første buffer utfører en oppdatering for lagring i den andre buffer, for bruk under den neste beregningsperiode. I denne neste periode eller syklus beregnes verdien k, fra verdier som ligger lagret i den andre buffer. Disse verdier og verdien kj brukes for å frembringe oppdaterte verdier for den neste periode og med de oppdaterte verdier lagret i den første buffer. En slik alternering mellom buffere tillater at man kan holde tilbake data under prosesseringen i påfølgende perioder mens man lagrer oppdaterte verdier uten at de erstatter de prosessverdier som trengs for å frembringe de oppdaterte verdier. Bruk av en slik teknikk kan redusere den forsinkelse som gjerne er knyttet til beregningen av verdien kj for den neste periode, og derfor kan oppdateringen av multiplikasjonene/akkumuleringene under beregningen av k; utføres samtidig med beregningen av den neste verdi av oj(l*l).
De ti LPC-koeiffsienter <g>§(,<0>) som ligger lagret i bufferen 356 ved avslutningen av den siste beregningssyklus (i = 10) skaleres for å danne de tilsvarende endelige LPC-koeffisienter oj. Skaleringen utføres ved å overføre et skaleringsvalgsignal til multiplekserne 344, 376 og 378 slik at skaleringsverdiene som blir lagret i oppslagstabellen 342, nemlig de heksagonale verdier i tabell III velges for overføring via multipleksenheten 344. Verdiene som lagres i tabellen 342 klokkes ut i rekkefølge og føres til multiplikatoren 360 som også via multipleksenheten 376 mottar verdiene o/<10>) i sekvens fra registeret 356. De skalerte verdier føres ut fra multiplikatoren 360 via multipleksenheten 378 som en utgang til subsystemet 208 (fig. 7) for transformasjon av LPC til LSP.
For å utføre effektiv koding av hver av de ti skalerte LPC-koeffisienter innenfor et mindre antall bit blir koeffisientene transformert til LSP-frekvenser som beskrevet i artikkelen "Line Spectrum Pair (LSP) and Speech Data Compression" av Soong og Juang, ICASSP 1984. Beregningen av LSP-parametrene vises nedenfor i ligningene (21) og (22) sammen med tabell IV.
LSP-frekvensene er de ti røtter som foreligger mellom 0 og x i følgende ligninger: hvor p„ og q„ angir verdier for n = 1,2,3,4 og defineres rekursivt i tabell IV:
I tabell IV er verdiene 04,ot10 de skalerte koeffisienter som danner resultatet fra LPC-analysen. De ti røtter i ligningene (21) og (22) blir skalert til mellom 0 og 0,5 for enkelhets skyld. En bestemt egenskap av LSP-frekvensene er at røttene av de to funksjoner veksler hvis LPC-filteret er stabilt, dvs. at den laveste rot wl også er den laveste rot i P(oj), den nest laveste rot o2 er den laveste rot i Q(u), etc. Av de ti frekvenser er de odde frekvenser røttene i P(w), mens de like frekvenser er røttene i Q(w).
Rotsøket utføres på følgende måte: først beregnes p- og q-koeffisientene ved dobbel presisjon ved å legge til LPC-koeffisientene slik som vist ovenfor. P(<g>j) utledes deretter hver fl/256 radian og disse verdier utledes videre for fortegnsendring, hvilket fastlegger en rot i det aktuelle underområde. Hvis en rot finnes utføres lineær interpolasjon mellom de to grenser av underområdet for å skilne rotens posisjon tilnærmet. En Q-rot vil sikkert finnes mellom hvert par P-røtter (f.eks. finnes den femte Q-rot mellom den femte P-rot og x) som følge av frekvensenes ordning. Et binært søk utføres mellom hvert par P-røtter for å bestemme posisjonen av Q-røttene. For å lette dette tilnærmes hver P-rot til den nærmeste T/256-verdi, og binærsøket utføres mellom disse tilnærmelser. Hvis en rot ikke finnes brukes de siste ukvantiserte verdier av LSP-frekvensene fra den foregående ramme hvor røttene var funnet.
Det vises nå til fig. 11 som illustrerer et eksempel på de kretser som brukes for å frembringe LSP-frekvensene. Den operasjon som er beskrevet ovenfor krever totalt 257 mulige kosinusverdier mellom 0 og ir, og disse verdier lagres ved dobbel presisjon i en oppslagstabell, nemlig kosinusoppslagstabellen 400 som kan adresseres av en "mod 256" teller 402. For hver verdi av j som føres til tabellen 400 fremkommer en utgang å cos u, cos 2u>, cos 3o, cos 4w og cos 5w, idet:
hvor j er en tellerverdi.
De fire første kosinusverdier fra tabellen 400 er ført til sin respektive multiplikator 404, 406, 408 og 410, mens den femte kosinusverdi, cos 5aj er ført direkte til summeringskretsen 412. Disse verdier multipliseres i sin tilhørende multiplikator 404, 406, 408 og 410 med sin tilhørende verdi p4, p3, p2 og p[ via rnultipleksenhetene 414, 416, 418 og 420. De resulterende verdier fra denne multiplikasjonen føres også til summeringskretsen 412. Videre overføres verdien ps via multipleksenheten 422 til multiplikatoren 424 sammen med den konstante verdi 0,5, og resultantverdien fra multiplikatoren 424 føres som en annen inngang til summeringskretsen 412. Multipleksenhetene 414-422 velger mellom verdiene pr ps eller qrq5 i respons på et p/q-koeffisientvalgsignal for å bruke samme krets for beregning av både P(co)- og Q(u)-verdiene. Kretsen for frembringelse av prp5 eller qt-q5 er ikke vist, men er lett tenkbar ved å bruke en rekke summeringskretser for å summere og subtrahere LPC-koeffisientene og verdiene for prp5 eller qrq5, sammen med registeret for lagring av disse verdier.
Summeringskretsen 412 oppsummerer inngangsverdiene for å komme frem til utgangsverdiene P(u) eller Q(o)) i avhengighet av situasjonen. For å forenkle den videre beskrivelse skal vi betrakte tilfellet for verdiene av P(w), men de tilsvarende verdier av Q(u) vil være beregnet på tilsvarende måte ved å bruke verdiene for qi-qs. Den aktuelle verdi av P(cj) føres ut fra summeringskretsen 412 hvor den har ligget lagret i registeret 426. De ridli-gere verdier av P(cu) og som tidligere lå i registeret 426 blir overført til registeret 428. Fortegnet for strømmen og tidligere verdier av P(<g>j) føres tit en logisk kopling som utfører EKSKLUSIV ELLER, idet denne kopling utgjøres av en port 430 for å gi indikasjon på en nullgjennomgang eller fortegnsendring, i form av et klareringssignal (enable signal) som overføres til en lineær interpolator 434. Den aktuelle og den tidligere verdi av P(o)) føres også ut fra registrene 426 og 428 til den lineære interpolator 434 som arbeider i respons på klareringssignalet for interpolering av punktet mellom de to verdier av P(o>) hvor null-gjennomgangen forefinnes. En slik lineær interpolasjon med hensyn til fraksjonsverdi angir avstanden fra verdien j-1 og videreføres til bufferen 436 sammen med selve verdien j fra telleren 256. Porten 430 gir også klareringssignalet til bufferen 436 som på sin side tillater lagring av verdien j og den tilsvarende fraksjonsverdi FVj.
Fraksjonsverdien trekkes fra verdien j som en utgang fra bufferen 436 i summeringskretsen 438, eller alternativt kan den trekkes fra denne som en inngang til bufferen 436. I alternativet kan et register i j-linjeinngangen brukes for bufferen 436 slik at verdiene j-1 vil være tilstrekkelige til å kunne føres tit bufferen 436 og med fraksjonsverdien likeledes innført i denne; Fraksjonsverdien kan legges til verdien j-1 enten før lagring i registeret 436 eller ved dettes utgang. I ethvert tilfelle føres den kombinerte verdi av j + FVj eller (j-1) + FVj til en divisjonskrets 440 hvor det tilførte deles med en inngående konstant verdi på 512. Divisjonen kan være enkel eller utføres ved til stadighet å endre binærpunkt-lokasjonen i det tilsvarende binære ord. En slik deling gir den nødvendige skalering for å komme ut ved LSP-frekvenser mellom 0 og 0,5.
Hver funksjonsevaluering av P(co) eller Q(a)) krever fem kosinusundersøkelser, fire dobbelpresisjonsmultiplikasjoner og fire addisjoner. De beregnede røtter er typisk bare nøyaktighet til omkring 13 bit og lagres under enkel presisjon. LSP-frekvensene overføres til LSP-kvantiseringssubsystemet 210 (fig. 7) for kvantisering.
Når LSP-frekvensene er beregnet må de kvantiseres for overføring. Hver av de ti LSP-frekvenser ligger sentrert tilnærmet rundt en forskyvningsverdi, og det skal bemerkes at de tilnærmet antar denne verdi når den innkommende tale har et flatt talespektrum og hvor det ikke kan utføres noen korttidsprediksjon. Forskyvningene trekkes ut i koderen og en enkelt DPCM-kvantiseringskrets brukes. I dekoderen tilbakeføres forskyvningen. Den negative verdi av forskyvningsverdien blir i heksadesimal form og for hver LSP-frekvens tøi-cdtø som tilveiebrakt fra LPC- til LSP-transformasjonssystemet vist i den etterfølgende tabell V. På ny gis verdiene i tokomplements form og med 15 fraksjonelle bit. Heksadesimalverdien 0x8000 (eller -32768) er angitt ved -1,0. Følgelig blir den første verdi i tabell V, nemlig verdien 0xfa2f (eller -1489), angitt som -0,045441 = -1489/32768.
Den "prediktor" som ble benyttet i subsystemet er 0,9 ganger den kvantiserte LSP-frekvens ut fra den tidligere ramme og lagret i en buffer i subsystemet. Denne konstante reduksjon innføres slik at kanalfeilene etter hvert vil reduseres og dø ut.
De benyttede kvantiseringskretser er lineære, men de varierer i dynamisk omfang og trinnstørrelse med takten. Likeledes vil rammer med høy takt overføre flere bit for hver LSP-frekvens, og derfor vil antallet kvantiseirngsnivåer være avhengig av den valgte takt. I tabell VI nedenfor er satt opp bitallokeringen og det dynamiske omfang for kvantiseringen for hver frekvens og ved hver takt. For eksempel ved full takt vil 6jt være uniformt kvantisert ved anvendelse av 4 bit (det betyr i 16 nivåer) og med høyeste kvantiseirngsnivå 0,025 og laveste
-0,025:
Hvis kvantiseringsområdene for den takt som er valgt av bestemmelsesalgoritmen ikke er store nok eller hvis det dannes et flankeoverløp forskyves takten opp til det neste høyere trinn. Takten blir forskjøvet videre oppover helt til det dynamiske område passer eller man har oppnådd full takt eller rate. I fig. 12 vises et typisk blokkdiagram av én utførelse for taktoppfølging.
I blokkskjemaet vises hvordan et subsystem 210 for LSP-kvantisering (fig. 12 danner en fortsettelse av fig. 11, men selve subsystemet 210 er ikke angitt med noe henvisningstall på disse figurer). LSP-frekvensene (o>j) fra divisjonskretsen 440 (fig. 11) er på fig. 12 vist ført til et register 442 hvor frekvensene lagres for bruk under en taktoppskriving i den neste ramme. De tidligere LSP-frekvenser (i den foregående ramme) og frekvensene i den aktuelle, etterfølgende ramme føres henholdsvis ut fra registeret 442 og divisjonskretsen 440 til en logisk krets 444 for taktoppskriving for en aktuell ramme når slik oppskriving blir bestemt. Kretsen 444 mottar også det opprinnelige bestemmelsessignal for takten, sammen med taktsignalet og taktgrensesignalene fra taktbestemmelsessubsystemet 204. Bestemmelse om en taktøkning er nødvendig utføres ved at kretsen 444 sammenligner den tidligere rammes LSP-frekvenser med den aktuelle rammes ut fra middelkvadratdifferansen, og resultatet sammenlignes med en terskelverdi som ved over-skridelse gir en indikasjon om at det er nødvendig med en økning av takten for å sikre høykvalitets koding av talen. Når terskelverdien overskrides inkrementerer den logiske krets 444 den opprinnelige takt med det som tilsvarer et nytt nivå slik at koderens utgang legger seg på den nye, høyere takt.
I fig. 12 forutsettes at LSP-frekvensverdiene UpWio én ad gangen føres til summeringskretsen 450 sammen med den tilhørende forskyvningsverdi. Denne forskyvningsverdi trekkes fra inngangsverdiene for LSP og resultatet føres videre til summeringskretsen 452. Denne mottar også en inngang fra en prediksjonsverdi som er en LSP-verdi som hører til en foregående ramme, multiplisert med en reduksjonskonstant. Prediksjonsverdien trekkes fra utgangen fra summeringskretsen 450 i summeringskretsen 452, og dennes utgang føres som inngang til en etterfølgende kvantiseirngskrets 454.
Kvantiseringskretsen 454 er bygget opp med en begrenser 456, en oppslagstabell 458 for minimalt dynamisk omfang, en oppslagstabell 460 for invers trinnstørrelse, en summeringskrets 462, en multiplikator 464 og en bitmaskeirngskrets 466. Kvantiseringen utføres i kvantiseringskretsen 454 ved først å bestemme om inngangsverdien ligger innenfor det aktuelle dynamiske område som bestemmes av kvantiseringskretsen. Inngangsverdien føres til begrenseren 456 som begrenser den til det dynamiske omfangs øvre og nedre grense hvis inngangen overskrider de grenser som er satt av oppslagstabellen 458. Denne tabell tilveiebringer de lagrede sprang i henhold til tabell VI til begrenseren 456 i respons på taktinngangen og LSP-frekvensindeksen i inngangen. Verdien ut fra begrenseren 456 er ført til summeringskretsen 462 hvor verdien for det minimale dynamiske omfang, tilveiebrakt fra oppslagstabellen 458 blir trukket fra. Denne verdi bestemmes på sin side igjen av takten og LSP-frekvensindeksen i samsvar med de minimale dynamiske omfangsverdier og uavhengig av disses fortegn, slik det fremgår av tabell VI. For eksempel er verdien i tabellen for G)i og full takt 0,025.
Utgangen fra summeringskretsen 462 multipliseres deretter i multiplikatoren 464 med en verdi som velges fra oppslagstabellen 460 som inneholder verdier som tilsvarer det inverse av trinnstørrelsen for hver LSP-verdi ved hver takt i samsvar med verdiene i tabell VI. Verdiutgangen fra tabellen 460 velges av takten og indeksen i, og for hver takt og indeks i er den verdi som ligger lagret i tabellen 460 størrelsen (2n<->l)/det dynamiske omfang, hvor n er antallet bit som representerer kvantiseringsverdien. For på ny å ta et eksempel er verdien i
tabellen 460 for full takt og o>i = 15/0,05 = 300.
Utgangen fra multiplikatoren 464 er en verdi mellom 0 og 2n<->l og føres til bitmaskeringskretsen 466 som i respons på takten og LSP-frekvensindeksen i fra inngangsverdien trekker ut det riktige antall bit i samsvar med tabell VI. De uttrukne bit er de n heltallsverdibit som hører til inngangsverdien for å gi en bilbegrenset utgang Aco;. Verdiene AtOj er de kvantiserte og uforskjøvne differensielt kodede LSP-frekvenser som overføres i kanalen og representerer LPC-koeffisientene.
Verdien A©j føres også tilbake gjennom en prediktor som består av en inverskvantiseringskrets 468, en summeringskrets 470, en buffer 472 og en multiplikator 474. Kretsen 468 består av en trinnoppslagstabell 476, en oppslagstabell 478 for minimalt dynamisk område, en multiplikator 480 og en summeringskrets 482.
Verdien Aco, føres til multiplikatoren 480 sammen med en utvalgt verdi fra tabellen 476 som inneholder verdier som tilsvarer trinnstørrelsen for hver LSP-verdi ved hver takt i samsvar med verdiene som fremgår av tabell VI. Verdien ut fra tabellen 476 velges av takten og indeksen i, og for hver takt og indeks er verdien i tabellen 460 størrelsen (dynamiske omfang/(2<n->l)), hvor n er antallet bit som representerer kvantiserte verdi. Multiplikatoren 480 multipliserer inngangsverdiene og gir en utgang til summeringskretsen 482.
Summeringskretsen 482 mottar som en andre inngang en verdi fra oppslagstabellen 478, bestemt av takten og indeksen i i samsvar med de minimale dynamiske områdeverdier, uavhengig av fortegnet og slik det fremgår av tabell VI. Summeringskretsen legger til disse verdier fra tabellen 478 verdiene fra multiplikatoren 480 med den resulterende verdi i hvert enkelt tilfelle ført til summeringskretsen 470.
Summeringskretsen 470 mottar som en andre inngang prediktorverdien fra multiplikatoren 474, og hver av disse verdier summeres i summeringskretsen 470 og lagres i et ti-ords bufferlager 472. Hver verdi fra den foregående ramme føres fra bufferlageret 472 og blir multiplisert i multiplikatoren 474 med en konstant som i dette tilfelle er lik 0,9. Predik-torverdiene fra multiplikatoren 474 føres til begge summeringskretser 452 og 470 som tidligere beskrevet.
I den aktuelle ramme er den verdi som lagres i bufferen 472 eller dennes lager de rekonstruerte LSP-verdier fra den tidligere ramme minus forskyvningsverdien. Tilsvarende gjelder for den aktuelle ramme at verdien fra summeringskretsen 470 er den tilsvarende verdi for den rekonstruerte LSP for den aktuelle ramme og uten forskyvningstillegg. I den aktuelle ramme føres både utgangen fra bufferen 472 og summeringskretsen 470 til summeringskretsene 484 og 486 hvor forskyvning tillegges verdiene, og utgangsverdiene fra disse kretser er således de rekonstruerte LSP-frekvensverdier for den foregående ramme og den aktuelle. LSP-glatting utføres ved lavere takter i henhold til ligningen:
hvor: a = 0 for rull takt
a = 0,1 for halv takt
a = 0,5 for kvart takt, og
a - 0,85 for åttedels takt.
De rekonstruerte LSP-frekvensverdier Q\(. t for den foregående ramme (f-1) og de tilsvarende LSP-frekvensverdier <g>)'^ for den gjeldende eller aktuelle ramme (f) føres ut fra kvantiseringssubsystemet 210 til et subsystem 216 for LSP-interpolasjon av tonehøyden i en underramme, og et tilsvarende subsystem 226 for LSP-interpolasjon av kodebokunderrammen. De kvantiserte LSP-frekvensverdier 0); føres ut fra subsystemet 210 til et datagrupperingssubsystem 236 for overføring.
LPC-koeffisientene brukt i veiefilteret og formantsyntesefilteret beskrevet tidligere vil egne seg for tonehøydeunderrammen under koding. For tonehøydeunderrammer utføres interpolasjonen av LPC-koeffisientene for hver tonehøydeunderramme og er slik det fremgår av tabell VII nedenfor:
Tonehøydeundeirammetelleren 224 brukes for å holde kontroll med og styring av tonehøydeunderrammene sorft tonehøydeparametrene beregnes for, med tellerutgangen ført til subsystemet 216 for anvendelse under LSP-interpolasjonen. Telleren 224 gir også en utgang som indikerer fullførelsen av tonehøydeunderrammen for den valgte takt vis-å-vis datagrupperingssubsystemet 236.
Fig. 13 illustrerer et eksempel på anvendelse av subsystemet 216 for LSP-interpolasjon i tonehøydeunderrammen, idet LSP-frekvensene u'j(f_t og u\( for henholdsvis den foregående og den aktuelle ramme føres ut fra LSP-kvantiseringssubsystemet til multiplikatorer 500 og 502 som utfører en multiplikasjon med en konstant fra et lager 504 som inneholder et sett konstante verdier og i samsvar med en inngang for tonehøydeunder-rammetallet fra en teller gir en utgang med konstanter slik det fremgår av tabell VII for multiplikasjon med LSP-verdiene for både den foregående og den aktuelle ramme. Dette skal gjennomgås nærmere senere. Utgangen fra multiplikatorene 500 og 502 summeres i en summeringskrets 506 slik at LSP-frekvensverdiene for tonehøydeunderrammen fremkommer i samsvar m*ed ligningene i tabell VII. For hver tonehøydeunderramme utføres en reverstransformasjon fra LSP til LPC etterat interpolasjonen av LSP-frekvenser er utført, for å komme frem til de aktuelle koeffisienter for A(z) og perseptiweiefilteret. De interpolerte LSP-frekvensverdier føres således til det subsystem 218 som er vist på fig. 7 og gjelder transformasjonen fra LSP til LPC.
Subsystemet 218 omvandler de interpolerte LSP-frekvenser tilbake til LPC-koeffisienter for bruk ved resyntetisering av talen. På ny gjelder innholdet i artikkelen "Line Spectrum Pair (LSP) and Speech Data Compression", av Soong og Juang, hvor algoritmene som denne oppfinnelse bruker for transformasjonsprosessen gjennomgås og utledes. Beregningsaspektene er slik at størrelsene P(z) og Q(z) kan uttrykkes som funksjon av LSP-frekvenser i henhold til ligningene: hvor w; er røttene i polynomet P' (oddetallsrfekvenser) og
hvor w; er røttene i polynomet Q<1> (liketallsfrekvenser), mens
•T
Beregningen utføres ved at verdiene 2coso\ først beregnes for samtlige oddetallsfrekvenser i, idet denne beregning utføres ved hjelp av en femteordens enkeltpresisjons Taylor-rekkeekspansjon av kosinusfunksjonen omkring null (0). En Taylor-ekspansjon omkring det nærmeste punkt i kosinustabellen ville i utgangspunktet nok være mer nøyaktig, men ekspansjonen omkring null vil gi tilstrekkelig nøyaktighet og innebærer ikke for omfattende beregning.
Deretter beregnes koeffisientene i P-polynomet Koeffisientene i et polynomprodukt er konvolutten av sekvenser av koeffisienter for de enkelte polynomer, og konvolutten av de seks sekvenser av z polynomkoeffisienter i ligning (25) ovenfor beregnes således i denne rekkefølge: {l,-2cos(o>i), 1}, {l,-2cos(w3), 1}... {1, -2cos(g)9), 1} og {1,1}.
Når så polynomet P er beregnet utføres samme prosedyre for polynomet Q, for de seks sekvenser av z polynomkoeffisienter i ligning (26) ovenfor {I,-2cos(w2), 1}, {1,-2cos(<g>)4) ... 1}, {l,-2cos(o)to), 1} og {1,-1}, og de riktige koeffisienter summeres og deles med 2, dvs. forskyves 1 bit for å frembringe LPC-koeffisientene.
Fig. 13 viser videre en typisk utførelse av subsystemet for transformasjon fra LSP til LPC i detalj. Kretsdelen 508 beregner verdien av -2cos(o)j) ut fra inngangsverdien for ojj. Kretsdelen 508 består av en buffer 509, summeringskretser 510 og 515, multiplikatorer 511, 512, 514, 517 og 518, og registere 513 og. 516. Ved beregning av verdiene for -2cos(o)s) er registrene 513 og 516 nullstilt eller initialisert til null. Siden denne kretsdel beregner sin(cji) trekkes først Uj fra x/2 i summeringskretsen 510, idet x/2 er en innført konstant verdi. Resultatet kvadreres i multiplikatoren 511, og deretter beregnes fortløpende verdiene for (x/2 - ojj)<2>, (x/2 - tdj)4, (x/2 - o)j)<ti>, (t/2 - 6>j)<8> ved hjelp av multiplikatoren 512 og registeret 513.
Taylor-rekkeekspansjonskoeiffsientene c[l] - c[4] føres deretter til multiplikatoren 514, sammen med verdiene fra multiplikatoren 512. Utgangsverdiene fra multiplikatoren 514 føres til summeringskretsen 516 hvor verdiene, sammen med utgangsverdiene fra registeret 515 summeres for å gi utgangen c[l](x/2 - G)j)<2> + c[2j(x/2 - cjs)4 + c[3](i/2 - w;)<6> + c[4](x/2 - <j>if til multiplikatoren 517. Inngangen til denne fra registeret 516 multipliseres i multiplikatoren med utgangen (r/2 - ojj) fra summeringskretsen 510, og utgangen fra multiplikatoren 517, verdien cos(Wi) multipliseres i multiplikatoren 518 med konstanten -2 slik at man far totaluttrykket -2cos(a)j). Denne verdi overføres til kretsdelen 520.
Kretsdelen 520 brukes ved beregningen av koeffisientene i polynomet P. Kretsdelen består av et lager 521, en multiplikator 522 og en summeringskrets 523. Det array eller register som inneholder lagerplassene P(l)... P( 11) nullstilles med unntak av P(l) som settes til 1. De tidligere indekserte -2cos(wj)-verdiene føres til multiplikatoren 524 for å utføre konvolvering av (1, -2cos(Wi), 1) hvor 1 £ i < 5,1 £ j < 2i+l, PØ = 0 forj<l. Kretsdelen 520 dupliseres (ikke vist) for beregning av koeffisientene i polynomet Q. De resulterende endelige nye verdier av P(l) - P(l 1) og Q(l) - Q(l 1) er ført til kretsdelen 524.
Kretsdelen 524 er bygget opp for komplettering av beregningen av tonehøydeunder-rammens 10 LPC-koefifsienter for i=l til i=10. Kretsdelen 524 består av buffere 525 og 526, summeringskretser 527, 528 og 529, og en deler eller bitforskyver 530. De endelige verdier P(i) og Q(i) lagres i bufferne 525 og 526, og verdiene P(i) og P(i+1) summeres i summeringskretsen 527, mens de tilsvarende Q(i) og Q(i+1) subtraheres i summeringskretsen 528 for 1 < i < 10. Utgangene fra summeringskretsene 527 og 528 hhv. P(z) og Q(z) føres til summeringskretsen 529 for summering og videreføring som verdien (P(z) + Q(z)). Utgangen fra summeringskretsen deles på to ved forskyvning av de enkelte bit én enkelt posisjon. Hver bitforskjøvet verdi av [P(z) + Q(z)J/2 er en utgående LPC-koeffisient 04. Underrammens LPC-koefifsienter for tonehøyden føres til tonehøydesøksubsystemet 220 vist på fig. 7.
LSP-frekvensene interpoleres også for hver kodebokunderramme slik det bestemmes av den valgte takt, med unntak av full takt. Interpolasjonen utføres på en måte som er identisk med den for LSP-interpolasjonene for tonehøydeunderrammen. LSP-interpolasjonene for kodebokunderrammen beregnes i subsystemet 226 og videreføres til subsys-ternet 228 for transformasjon fra LSP til LPC, idet denne transformasjon utføres på en måte som tilsvarer den samme transformasjon i subsystemet 218.
Slik det ble gjennomgått i forbindelse med fig. 3 utføres tonehøydesøket som en teknikk av typen analyse ved syntese, hvor kodingen utføres ved å velge parametere som fører feilen mellom den opprinnelige tale og den syntetiserte som bruker de samme parametere til et minimum. I tonehøydesøket utføres syntese ved å bruke tonehøyde-syntesefilteret hvis respons uttrykkes i ligning (2). Hvert 20. millisekund deles talerammen opp i et antall tonehøydeunderrammer som, slik det ble beskrevet tidligere vil avhenge av den datatakt som er valgt for rammen. Følgende verdier beregnes én gang for hver tone-høydeunderramme: parametrene b og L, tonehøydeheving og -senkning. I eksempelet er tonehøydesenkningen L mellom 17 og 143, for overføringsformål reserveres L=16 for det tilfelle hvor b=0.
Talekoderen bruker et perseptivstøyveiefilter av den form som angis i ligning (1). Som nevnt tidligere er hensikten med dette filter å tillegge forskjellig vekt til feilene ved frekvenser som har mindre energiinnhold for å redusere pådraget av feilrelatert støy. Filteret utledes fra det korttidsprediksjonsfilter som tidligere ble funnet. LPC-koeffisientene i veiefilteret og formantsyntesefilteret som beskrives senere er de interpolerte verdier som passer for den underramme som i øyeblikket blir kodet.
Ved å utføre analyse ved syntese brukes en kopi av taledekoderen/syntetisatoren i koderen. Den form som syntesefilteret får i talekoderen er gitt av ligningene (3) og (4). Ligning (3) og (4) tilsvarer et dekodertalesyntesefilter som etterfølges av perseptiv-veiefilteret og kalles derfor veiesyntesefilter.
Tonehøydesøket utføres ved å anta null bidrag fra kodeboken i den aktuelle ramme, dvs. G = 0. For hver mulig verdi av tonehøydesenkningen L syntetiseres talen og sammenlignes med den originale tale. Avviket mellom disse talefølger veies av perseptiweiefilteret før middelkvadratawiket beregnes. Hensikten er å plukke ut verdier av L og b fra samtlige mulige, som reduserer feilen mellom den oppfattede veide tale og den oppfattede veide syntetiserte tilsvarende tale. Minimaliseringen av feilen kan uttrykkes av ligningen:
hvor Lp er antallet sampler i tonehøydeunderrammen, i eksempelet Hk 40 for en underramme ved full takt. Tonehøydeøkningen b beregnes for å gi minst mulig middelkvadratawik, og disse beregninger utføres for samtlige tillatte verdier av L, for å komme frem til det sett av L og b som gir det minste middelkvadratawik for tone-høydeftlteret. Beregningen av den optimale L innbefatter at man finner formantresidualet (p(n) på fig. 3) for samtlige tidspunkter mellom n = -Lma]cs til n = (Lp - Lmj„) - 1. hvor er den maksimale tonehøydesenkningsverdi, Lmjn er den minimale tilsvarende verdi og Lp er tone-høydeunderrammelengden for den bestemte takt, og videre gjelder at n = 0 er tidspunktet for starten av underrammen. I eksempelet er Lmai<s = 143, mens Lmjn = 17. Ved å bruke det tallmateriale som fremgår av fig. 14 blir for kvart takt n = 143 til 142, for halv takt blir n fra -143 til 62, og for full takt blir n fra -143 til 22. For n < 0 dannes formantresidualet rett og slett ved utgangen fra tonehøydefilteret ut fra den foregående tonehøydeundenamme, idet denne holdes i tonehøydefilterlageret og kalles formantresidualet for den lukkede sløyfe. For n > 0 er formantresidualet utgangen fra formantanalysefilteret med filterkarakteristikk A(z), hvor inngangen til filteret er talesamplene i den aktuelle analyseramme. For n > 0 kalles også formantresidualet åpen-sløyfe-residual og ville være nøyaktig p(n) hvis tonehøydefilteret og kodeboken utførte en perfekt prediksjon for denne underramme. Ytterligere forklaring av beregningen av optimal tonehøydesenkning fra de tilhørende formantresidualverdier følger under gjennomgåelsen av fig. 14-17.
Tonehøydesøket utføres over 143 rekonstruerte formantresidualsampler i lukket sløyfe, p(n) for n < 0, pluss Lp-Lmjn ukvantiserte formantresidualsampler i åpen sløyfe, p0(n) for n > 0. Søket endres i praksis gradvis fra tilnærmet åpen-sløyfe-søk hvor L er liten og således de fleste av de residuelle. sampler som benyttes tilsvarer n > 0, til tilnærmet lukket-sløyfe-søk hvor n er stor og således samtlige residuelle sampler som benyttes tilsvarer n < 0. For eksempel kan man bruke det nummereringsskjema som fremgår av fig. 14 for full takt, hvor tonehøydeunderrammen består av 40 talesampler, og ifølge dette eksempel starter tone-høydesøket ved bruk av det sett av formantsampler av residuell type som er nummerert fra n = 17 til n = 22.1 skjemaet er samplene ved n = -17 til n = -1 residuelle formantsampler i lukket sløyfe, mens den øvrige del med n = 0 til n = 22 er i åpen sløyfe. Det neste sett sampler for bestemmelse av optimal tonehøydesenkning er de sampler som er nummerert fra n = -18 til n = 21. På tilsvarende måte er det første område opp til n = -l i lukket sløyfe, mens det øverste område fra n = 0 til n = 21 er i åpen sløyfe. Prosessen fortsetter gjennom samtlige sampelsett helt til tonehøydesenkningen er beregnet for det siste sett formantsampler, nemlig mellom n = -143 og n = -104.
Som gjennomgått tidligere i forbindelse med ligning (28) er hensikten å redusere feilen eller avviket mellom x(n), den perseptuelt veide tale minus nullinngangsresponsen (ZIR) for veieformantfilteret, og x'(n), den perseptuelt veide syntetiserte tale som ikke har lagerplass i filtrene, over samtlige mulige verdier av L og b, idet null bidrag gis fra den stokastiske kodebok (G=0). Ligning (28) kan omskrives med hensyn til b: hvor
hvor y(n) er den veide syntetiserte tale med tonehøydesenkning L når b= 1, og h(n) er pulsrcsponsen for det veiende formantsyntesefilter hvis filterkarakteristikk tilfredsstiller ligningen (3).
Denne minimaliseirngsprosess tilsvarer maksimalisering av verdien EL> hvor:
Den optimale b for en gitt L finnes å være:
Dette søk gjentas for samtlige tillatte verdier av L. Den optimale verdi for b begrenses til å være positiv, slik at L-verdier som fører til negativ Exy ignoreres i søket. Endelig velges så den tonehøydesenkning L og den heving b som bringer EL til et maksimum, for den aktuelle signal- eller informasjonsoverføring.
Som nevnt tidligere er x(n) i virkeligheten den perseptuelt veide forskjell mellom den innkommende tale og ZIR av det veiende formantfilter siden man kan anta at filteret A(z) alltid starter med null i filterlageret for den såkalte rekursive konvolvering som fastlegges i ligningene (35)-(38) nedenfor. Det er imidlertid ikke alltid slik at filteret starter med en 0 i filterlageret, ved syntesen kan det nemlig ha en tilstand forskjellig fra den foregående underrammes, og ved implementeringen trekkes parametrene for starttilstanden fra den perseptuelt veide tale ved starttidspunktet. På denne måte trenger man bare beregne responsen av et statisk filter A(z) hvor alle lågere er satt til 0 til p(n) for hver L, og man kan bruke rekursiv konvolvering. Denne verdi av x(n) behøver man bare beregne én gang, men y(n), nulltilstandsresponsen for formantfilteret overfor utgangen fra tonehøydefilteret, behøves beregnet for hver verdi av L. Beregningen av hver y(n) involverer en rekke redundante multiplikasjoner som imidlertid ikke behøver beregnes for hver tone-høydesenkning. Fremgangsmåten med rekursiv konvolvering, beskrevet nedenfor, brukes for å redusere beregningstiden og -omfanget:
Når det gjelder den rekursive konvolvering defineres verdien YL(n) ved hjelp av verdien y(n) på følgende måte:
På denne måte kan de gjenstående konvolveringer utføres rekursivt etter at den innledende konvolvering for yi7(n) er utført, hvilket reduserer antallet beregninger som trengs i stor grad. For det eksempel som er tatt ovenfor for full takt beregnes verdien yi7(n) ved hjelp av ligningen (36) ved å bruke settet formantsampler av residuell type nummerert mellom n = -17 og n = 22.
Det vises nå til fig. 15 som illustrerer en kode som bruker et dekodersubsystem 235 tilsvarende det vist på fig. 7, en dekoder tilsvarende den vist på fig. 5, men hvor noe adaptivt postfilter ikke er med. Det viste subsystem mottar til sitt tonehøydesyntesefilter 550 produktet av kodebokverdien Cj(n) og kodebokvinningen G. Utgahgsformantsamplene p(n) av residuell type føres til formantsyntesefilteret 552 hvor samplene filtreres og føres ut som rekonstruerte talesampler s'(n). Disse trekkes fra de tilsvarende innkommende talesampler s(n) i den etterfølgende summeringskrets 554. Avviket mellom samplene føres videre til et perseptiweiefilter 556. Med hensyn til tonehøyde- og formantsyntesefilteret 550 hhv. 552 og perseptiweiefilteret 556 har samtlige av disse et lager for filtertilstanden hvor: Mp er lageret for det første, Ma er lageret for det andre og Mw er lageret for det tredje, nemlig perseptiweiefilteret 556.
Filterstatuslageret Ma for syntesefilteret 552 er koplet til subsystemet 220 for tone-høydesøk, vist på fig. 7. Lageret Ma brukes for å beregne filterets 560 ZIR slik at ZIR for filteret 552 også blir beregnet. Deretter trekkes den beregnede ZIR-verdi fra de innkommende talesampler s(n) i summeringskretsen 562, og resultatet veies i filteret 564. Utgangen fra dette perseptiweiefllter 564, xp(n), brukes som den veide inngående tale i ligningene (28)-(34), idet x(n) - xp(n).
Betrakter vi på ny fig. 14 og 15 i sammenheng fremgår at tonehøydesyntesefilteret 550 vist på fig. 14 gir en adaptiv kodebok 568 som i virkeligheten er et lager for lagring av samplene i lukket og åpen sløyfe og beregnet som angitt ovenfor. Formantresidualet i lukket sløyfe lagres i en lagerdel 570, mens det tilsvarende residual for åpen sløyfe lagres i en lagerdel 572. Samplene lagres i henhold til den nummerering som er satt opp i skjemaet nevnt ovenfor. Residualene ordnes som tidligere med hensyn til bruk for hvert søk L for tonehøydesenkning. Residualet i åpen sløyfe beregnes fra de innkommende talesampler s(n) for hver tonehøydeunderramme ved hjelp av formantsyntesefilteret 574 som bruker lageret Ma som hører til undersystemets formantsyntesefilter 502, for beregning av verdiene av po(n). Verdiene av p0(n) for den aktuelle tonehøydeunderramme forskyves forbi en rekke forsinkelseselementer 576 for å overføre lagerdelen 572 i den aktive kodebok 568. Formantresidualene i åpen sløyfe lagres sammen med det første residuelle sampel som frembringes og som er nummerert 0 og det siste tall 142.
Fig. 16 viser hvordan impulsresponsen h(n) av formantfilteret beregnes i filteret 566 og føres til et skiftregister 580. Som gjennomgått ovenfor i forbindelse med impulsresponsen av formantfilteret h(n) brukes ligningene (29)-(30) og (35)-(38) for hver tonehøydeunder-ramme i filteret. For ytterligere å redusere beregningsomfanget for tonehøydefiltersubsys-temet avkortes impulsresponsen for formantfilteret h(n) til 20 sampler.
Skiftregisteret 580 og multiplikatoren 582, summeringskretsen 584 og skiftregisteret 586 er koplet for å utføre rekursiv konvolvering mellom verdiene h(n) fra skiftregisteret 580 og verdiene c(m) fra den adaptive kodebok 568 slik som beskrevet ovenfor. Denne konvolvering utføres for å finne nullstatusresponsen (ZSR) for formantfilteret overfor de inngangssignaler som kommer fra tonehøydefilterlageret, idet man antar at tone-høydehevingen er satt lik 1. Når konvolveringskretsen arbeider går n i sløyfe fra Lp til 1 for hver m, mens m går i sløyfe fra (Lp - 17) - 1 til -143.
I registeret 586 videreføres ikke data når n = 1, og data samles ikke opp når n = Lp. Data føres som en utgang fra konvolllveirngskretsen når m < -17.
Etter konvolveringskretsen føler korrelasjon og sammenligning i kretser som kan utføre dette, for søking for å finne den optimale L og b. Korrelasjonskretsen, som også kan kalles middelkvadratfeilkretsen (MSE) beregner både auto- og krysskorrelasjon for ZSR med den perseptuelt veide forskjell mellom ZIR for formantfilteret og den innkommende opprinnelige tale, dvs. x(n). Ved å bruke disse verdier beregner korrelasjonskretsen verdien for den optimale tonehøydeheving for hver verdi av tonehøydesenkningen. Korrelasjonskretsen er bygget opp av et skiftregister 588, multiplikatorer 590 og 592, summeringskretser 594 og 596, registere 598 og 600, og en divisjonskrets 602. I korrelasjonskretsen utføres beregningene slik at størrelsen n kommer til å løpe syklisk fra Lp til 1, mens størrelsen m kommer til å bevege seg syklisk fra (Lp - 17)-1 til -143.
Korrelasjonskretsen etterfølges av en sammenligningskrets som utfører sammenligning og lagring av data for å bestemme den optimale verdi av L og b. Sammenligningskretsen består av en multiplikator 604, en komparator 606, registere 608, 610 og 612, og en kvantiseirngskrets 614. Utgangen fra denne kretssammenstilling gir sett av L og b for hver tonehøydeunderramme, og optimaliseringen går ut på å redusere avviket mellom den syntetiserte tale og den opprinnelige, idet b kvantiseres i åtte trinn av kvantiseringskretsen 604 og angis som en 3-bits verdi med det ytterligere trinn b = 0 som kommer til anvendelse når L=I6. Disse verdier av L og b overføres til subsystemet 230 og databufferen 222. Verdiene overføres via datapakkesubsystemet 238 eller bufferen 222 til dekoderen 234 for bruk i tonehøydesøket.
På samme måte som i tonehøydesøket gjennomgår kodeboken under sin søking i henhold til prinsippet analyse ved syntese en koding ved å velge parametere som reduserer feilen eller avviket mellom den opprinnelige tale og den syntetiserte og med bruk av samme parametere. For takten 1 /8 settes verdien av b til null.
Som gjennomgått tidligere deles hvert intervall på 20 ms i et antall kodebokunderrammer som vil være avhengige av den datatakt som velges for rammen. Én gang for hver underramme beregnes parametrene G og I, nemlig kodebokvinningen og -indeksen. Under beregningen av disse parametere interpoleres frekvensene for underrammen, med unntak av situasjonen for full rate eller takt, i underrammens LSP-interpolasjonssystem 226 på en måte som tilsvarer det som er beskrevet med hensyn til tonehøydeinterpola-sjonssystemet 216. LSP-frekvensene for kodeboken omvandles også til LPC-koefifsienter i transformasjonssystemet 228 for hver kodebokunderramme. Telleren 232 brukes for å følge kodebokunderrammene som parametrene beregnes for, og tellerens utgang er ført til systemet 226 for bruk under LSP-interpolasjonen, Telleren 232 gir også en utgang som indikerer avslutningen av en underramme for den bestemte takt, og denne utgang føres til tonehøydetelleren 224 for den aktuelle underramme.
Den såkalte eksiteringskodebok består av 2M kodevektorer som er bygget opp av en enhetsvariant av en gauss-fordelt tilfeldig sekvens med "hvit" frekvensfordeling. I kodeboken for M = 7 er det 128 innganger. Kodeboken organiseres rekursivt slik at hver kodevektor avviker fra den tilstøtende med én sampel, dvs. at samplene i en kodevektor blir forskjøvet én posisjon slik at en ny sampel blir tatt inn i den ene ende, mens en sampel tapes i motsatt ende. Av denne grunn kan en rekursiv kodebok lagres som et lineært array som er 2M + (Lc - 1) langt, hvor Lc er kodebokens underrammelengde. For imidlertid å forenkle implementeringen og bevare lagerplass brukes en sirkulær kodebok som er 2M sampler lang (128 sampler).
For å redusere beregningsomfanget avskjæres de gaussiske verdier i kodeboken sentralt. Verdiene velges opprinnelig fra en hvit gaussisk prosess med varians 1. Deretter settes samtlige størrelser som er mindre enn 1,2 til null, og dette bringer omkring 75 % av verdiene til null, hvorved det frembringes en kodebok med pulser. En midtkutting av kodeboken reduserer antallet multiplikasjoner som trengs for å utføre den rekursive konvolvering i kodeboksøket med en faktor på 4, siden multiplikasjoner med 0 ikke behøver utføres. Kodeboken som brukes i den foreliggende implementering er satt opp i tabell VIII nedenfor:
Som før bruker talekoderen et perseptivstøyveiefilter av en form som er fastlagt ligning (1) og som omfatter et vekttilleggende syntesefilter slik det fremgår av ligning (3). For hver kodebokindeks I syntetiseres talen og sammenlignes med den opprinnelige. Avviket veies av perseptiweiefilteret før middelkvadratawiket beregnes.
Som fastslått tidligere er hensikten å redusere avviket mellom x(n) og x'(n) over samtlige mulige verdier av I og G. Minimaliseringen av avviket kan uttrykkes på følgende måte:
hvor Lc er antallet sampler i kodebokunderrammen. Ligning (38) kan omskrives med hensyn tilG: hvor y er utledet ved konvolvering av pulsresponsen hos formantfilteret med hensyn til den I-te kodevektor, idet det antas at G = 1. Reduksjon til et minimum av middelkvadratawiket tilsvarer på sin side at man bringer Et til et maksimum:
Den optimale G for en gitt I finnes av ligningen:
Dette søk gjentas for samtlige tillatte verdier av 1.1 motsetning til tonehøydesøket tillates G å være både positiv og negativ. Til slutt finnes indeksen I og kodebokvinningen G som sammen gir et maksimum for Et for overføringen.
Man skal igjen minne om at x(n), den oppfattelsesmessig veide forskjell mellom den originale tale og ZIR av den veide tonehøyde og formantfiltrene bare behøver beregnes én gang. Imidlertid må man beregne y(n), nulltilstandsresponsen for tonehøyde- og formantfiltrene for hver kodevektor, for hver indeks I. Siden man bruker en sirkulært arbeidende kodebok kan fremgangsmåten for rekursiv konvolvering allerede beskrevet for tonehøydesøket brukes for å redusere beregningsbehovet.
Med henvisning til fig. 15 igjen fremgår at koderen omfatter en duplikat av dekoderen vist på fig. 5, et dekodersubsystem 235 vist på fig. 7 omfattes likeledes, og i dette subsystem beregnes filtertilstandene ved hjelp av lagrene Mp som lageret for tone-høydesyntesefilteret 550, Ma for syntesfilteret 552 og Mw for perseptiweiefilteret 556.
De filtertilstander som fremgår fra lagrene Mp og Ma føres til subsystemet 230 vist på fig. 7. Fra fig. 17 fremgår at disse tilstander overføres til nullimpulsresponsfilteret 620 (ZIR-filteret) som beregner nullresponsen for filtrene 550 og 552 og trekker resultatet fra samplene s(n) i summeringskretsen 622 hvoretter resultatet veies i filteret 624 som er et perseptiweiefilter. Utgangen fra det tilsvarende veiefilter 564, Xc(n) brukes som den veide innkommende tale i ligningene (39)-(44) for middelkvadratawiket, hvor x(n) = Xc(n).
Fra fig. 17 fremgår at formantfilterets pulsrespons h(n) beregnes i filteret 626 og føres til skiftregisteret 628. Beregningen utføres for hver kodebokunderramme. For ytterligere å redusere beregningsomfanget avkortes responsen til 20 sampler.
Skiftregisteret 628 sammen med multiplikatoren 632, summeringskretsen 632 og skiftregisteret 634 er sammen innrettet for å utføre rekursiv konvolvering mellom verdiene h(n) fra skiftregisteret 628 og verdiene c(m) fra kodeboken 636 som på sin side inneholder kodebokvektorene slik det er gjennomgått ovenfor. Denne konvolvering utføres for å finne ZSR hos formantfilteret for hver kodevektor, idet det antas at kodebokvinningen G settes lik 1. Ved aktiveringen av konvolveringskretsen vil n gå fra Lc til 1 for hver m, mens m går fra 1 til 256. I registeret 586 videreføres ikke data når n = 1 og holdes ikke når n = Lc. Data føres utfra konvolveringskretsen når m< 1. Det bemerkes at konvolveringskretsen må startes for å utføre rekursiv konvolvering ved syklisk bevegelse av m underrammelengder før starten av korrelasjons- og sammenligningskretsen etter konvolveringskretsen.
Den kombinerte krets nevnt ovenfor utfører det aktuelle kodeboksøk for å gi verdiene I og G. Korrelasjonskretsen, som også kan kalles middelkvadratawikskretsen MSE beregner auto- og krysskorrelasjonen av ZSR med den oppfattelsesmessig veide forskjell mellom ZIR fra tonehøyde- og formantfilteret, og den innkommende tale x'(n). Dette betyr at det er korrelasjonskretsen som beregner verdien av G for hver verdi I. Korrelasjonskretsen består av et skiftregister 638, multiplikatorer 640 og 642, summeringskretser 644 og 646, registere 648 og 650, og en deler 652.1 korrelasjonskretsen utføres beregningene slik at n kommer til å løpe periodisk fra Lc til 1, mens m på tilsvarende måte beveger seg fra 1 til 256.
Korrelasjonskretsen føles av sammenligningskretsen som utfører sammenligning og lagring av data for å bestemme den optimale verdi av I og G, kretsen består av en multiplikator 654, en komparator 656, registere 658, 660 og 662, og en kvantiseirngskrets 664. Kretsen gir for hver toneliøydeunderramme verdiene for I og G som minimaliserer avviket mellom den syntetiserte tale og den opprinnelige. G kvantiseres i kvantiseringskretsen 614 som utfører en DPCM-koding av verdiene på en tilsvarende måte som LSP-frekvenskvanti-seringen med forskyvning fjernet og tilhørende koding som beskrevet i forbindelse med fig.
12. Deretter føres de funne verdier for I og G til databufferen 222.
Ved kvantiseringen og DPCM-kodingen av kodeboken beregnes G i samsvar med følgende ligning:
hvor 20 lg Gj.i og 20 lg G^ er henholdsvis verdiene som beregnes for den umiddelbart foregående ramme (i-l) og rammen foran denne (i-2).
Størrelsene LSP, I, G, L og b sammen med takten overføres til datapakkesubsystemet 236 hvor de overførte data ordnes for sending. I én utførelse overføres de ovenfor nevnte størrelser til dekoderen 234 via subsystemet 236, mens i en annen overføres de via databufferen 222 til dekoderen 234 for anvendelse under tonehøydesøket. I den foretrukne utførelse har man imidlertid beskyttelse av kodebokens fortegnbit i subsystemet 236 som kan påvirke kodebokindeksen I, og derfor må man ta hensyn til en slik beskyttelse i tilfelle størrelsene I og G blir overført direkte fra bufferen 222.
I subsystemet 236 kan data samles eller pakkes i forskjellige overføringsformater.
Fig. 18 illustrerer dette for et datapakkesubsystem 236 som består av en støygenerator med tilnærmet tilfeldig fordelt støy, her kalt en PN-generator 670, en CRC-krets 672 for syklisk redundanskontroll/beregning, en databeskyttelseskrets 674 og en kombinasjonskrets 676. PN-generatoren 670 mottar informasjon vedrørende overføringshastigheten eller takten, og for åttedels takt frembringer generatoren et 4-bits tilfeldig tall som videreføres til kombinasjonskretsen 676. CRC-kretsen 672 mottar verdiene for kodebokvinningen og LSP sammen med takten, og for full takt frembringer denne krets en 11 bits intern CRC-kode som føres frem til kombinasjonsenheten 676.
Denne krets mottar det tilfeldige tall, CRC-koden og verdiene for LSP, I, G, L og b fra databufferen 222 (fig. 7b) og har sin utgang koblet til subsystemet 234 for dataproses-seringen for overføringskanalen. I den utførelse hvor data føres direkte fra bufferen 222 til dekoderen 234 ved minimum frembringes det 4-bits tilfeldige tall fra PN-generatoren 670 via kombinasjonskretsen 676 til dekoderen. Ved full takt omfatter de databit som kommer fra CRC-kretsen 672 sammen med data vedrørende rammen fra kombinasjonskretsen 676, mens ved åttedels takt erstattes kodebokindeksverdien I av det tilfeldige 4-bits tall.
I utførelseseksempelet er det foretrukket at det gis beskyttelse av kodebokvinningens fortegnbit, og ved dette gjøres vokoderens dekoder mindre følsom overfor en feil i denne bitposisjon. Hvis fortegnbiten nemlig ble endret som følge av en uregistrert feil ville kodebokindeksen peke på en vektor som ikke lenger hadde relasjon til den optimale situasjon. I feilsituasjonen uten beskyttelse ville den negative av den optimale vektor kunne velges, og denne vektor er faktisk den verst mulige vektor som kan finnes. Beskyttelsesskjemaet ifølge oppfinnelsen sikrer at en bitfeil på denne måte ikke kan forårsake et slikt uheldig valg. I praksis utføres det ved at beskyttelseskretsen 674 mottar verdien I og verdien G og undersøker fortegnbiten for G. Hvis fortegnet fastslås å være negativt legges verdien 89 til, mod 128, til den tilordnede kodebokindeks I. Denne føres ut fra kretsen 674 enten den er modifisert eller ikke, til kombinasjonskretsen 676.
1 den viste utførelse foretrekkes at man ved full takt beskytter de oppfattelsesmessig mest følsomme bit i den komprimerte taledatapakke, såsom ved hjelp av en intern CRC (syklisk redundanskontroll). Elleve ekstra bit brukes for å utføre en slik feildeteksjon og
-korreksjonsfunksjon som er i stand til å korrigere enhver enkelt feil i den beskyttede blokk. Denne beskyttede blokk består av den mest signifikante bit av de ti LSP-frekvenser og den tilsvarende mest signifikante bit av de åtte kodebokvinninger. Hvis en ukorrigerbar feil skulle dukke opp i denne blokk ignoreres pakken og en sletting iverksettes. Dette skal beskrives nærmere i den senere del av beskrivelsen. Eller settes tonehøydehevingen til null mens resten av parametrene brukes som mottatt. I det viste eksempel velges en syklisk kode som er relatert til følgende generatorpolynom:
hvorved man får en (31,21) syklisk kode. Det er imidlertid klart at andre polynomer også kan brukes. En total paritetsbit tilføyes for å gjøre koden til en (31,21)-kode. Siden det foreligger bare 18 informasjonsbit vil de første tre siffere i kodeordet settes til null og ikke overføres. Denne teknikk gir tilleggsbeskyttelse slik at hvis syndromet indikerer en feil i disse posisjoner betyr dette at man har en ukorrigerbar feil. Kodingen av en syklisk kode i systematisk form involverer beregningen av paritetsbit som xlO u(x) modulo g(x), hvor u(x) er meldingens polynom.
I dekodeenden beregnes syndromet som resten etter divisjonen av den mottatte vektor med g(x). Hvis syndromet indikerer feilfrihet aksepteres pakken uansett hvilken status totalparitetsbiten har, mens hvis syndromet indikerer en enkelt feil korrigeres denne hvis tilstanden for totalparitetsbiten ikke stemmer. Hvis syndromet indikerer mer enn én feil vrakes pakken. Ytterligere detaljer i et slik feilbeskyttelsesskjema kan finnes i avsnitt 4.5 i artikkelen "Error Control coding: Fundamentals and Applications" av Lin og Costello, med hensyn til syndromberegninger. 1 et nettbasert telefonsystem av kategori CDMA overføres data fra kombinasjonskretsen 674 til subsystemet 238 for kanalens overførte data, for å pakke data for sending i 20 ms datatransmisjonsrammer. I en overføirngsramme hvor vokoderen er satt til full takt overføres 192 bit ved en effektiv bittakt eller overføringshastighet på9,6 kb/s. Transmisjonsrammen består i dette tilfelle av en blandet modusbit som brukes for indikasjon av en blandet rammetype (0 = bare tale, 1 = tale og data/signalering), 160 vokoderdatabit sammen med 11 interne CRC-bit, 12 eksterne eller rammerelaterte CRC-bit, og åtte "haf-eller.avslutningsbit Ved halv takt overføres 80 vokoderdata-bit sammen med 8 CRC-bit for rammen og 8 avslutnings-bit ved en effektiv overføringshastighet på 4,8 kb/s. Ved kvart takt overføres 40 vokoderdata-bit sammen med 8 slutt-bit ved den effektive overføringshastighet på 2,4 kb/s. Endelig overføres ved åttedels takt 16 vokoderdata-bit sammen med 8 slutt-bit, og overføringshastigheten er da effektivt 1,2 kb/s.
Ytterligere detaljer ved den modulasjon som brukes i CDMA-systemer og sammen med vokoderen ifølge oppfinnelsen kan finnes i den parallelle patentsøknad USSN 07/543 496, med tittel: "System and Method for Generating Signal Waveforms in a CDMA Cellular Telephone System", også i navn Qualcomm. I dette system benyttes et skjema ved overføringshastigheter lavere enn den maksimale, hvor databit ordnes i grupper med hver enkelt gruppe kvasitilfeldig plassert innenfor overføringsrammer med 20 ms varighet. Det er klart at andre rammelengder og bilordninger i stedet kan brukes for oppfinnelsens vokoder.
I CDMA-systemet og andre systemer kan prosessorsubsystemet 238 på ramme/ramme-basis avbryte sendingen av vokoderdata for i stedet å sende ut andre data såsom signaleringsdata eller informasjonsdata som ikke vedrører tale. Denne særlige over-føringssituasjon angis ofte som "blank and burst" eller det man kanskje kan kalle "intermitterende". Prosessorsubsystemet erstatter således vokoderdata med de ønskede over-føringsdata for den aktuelle ramme.
En annen situasjon kan oppstå hvor det er et ønske å overføre både vokoderdata og andre data innenfor én og samme transmisjonsramme. Denne situasjon kalles gjeme "dim and burst" eller kanskje "kombinert" på norsk. I slik kombinert overføring mottar vokoderen taktgrensesignaler som fastlegger den endelige takt eller overføringshastighet, for eksempel til halv takt. Denne informasjon føres til subsystemet 238 som tilføyer de ytterligere data sammen med de aktuelle vokoderdata for den bestemte transmisjonsramme.
En ytterligere funksjon for fulldupleks telefonlinksamband er "rate interlock" eller "taktkopling"; Hvis den ene retning i sambandet utfører signaloverføring ved høyeste hastighet vil den andre retning i et slikt system tvinges til å overføre ved laveste hastighet og omvendt. Selv ved laveste takt eller hastighet vil det imidlertid være tilstrekkelig forståelighet for en aktiv taler å oppfatte at hun/han blir avbrutt og deretter stanse talen, hvoretter den andre sambandsretning kan overta informasjonsstrømmen. Hvis en som fører en samtale i et slikt samband fortsetter å snakke etter et forsøk på avbrytelse vil fremdeles sannsynligvis ikke oppfattes noen degradering av samtalekvaliteten siden vedkommendes egen tale "blokkerer" muligheten til å oppfatte kvalitetsforringelse. Ved at man dessuten kan bruke taktgrensesignaler kan vokoderen innstilles for å talekode talen ved en lavere takt enn den normale.
Det fremgår at disse grensesignaler kan brukes for å sette vokoderens maksimale takt til en lavere verdi enn full takt når det trengs tilleggskapasitet i CDMA-systemet. I et slikt system hvor et felles frekvensspektrum brukes for overføringen vil en brukers signal foreligge som en mulig interferens overfor andre brukere i systemet. Systemets brukerkapa-sitet er således begrenset av den totale interferens som forårsakes av systemets egne brukere. Når interferensnivået øker, normalt som følge av en økning av antallet brukere innenfor systemet vil man kunne forvente en degradering av kvaliteten for de brukere som ligger på nettet, nettopp på grunn av interferensøkningen generelt. Hver brukers bidrag til interferensen i et CDMA-system vil være en funksjon av brukerens overføringshastighet eller datatakt. Ved å la en vokoder kode inn tale ved en lavere takt enn den normale vil følgelig de kodede data overføres ved lavere overføringshastighet, hvilket bidrar til å redusere det totale interferensnivå. Av denne grunn kan systemkapasiteten økes betydelig ved å la flest mulig brukere overføre samtale ved lavest mulig overføringshastighet. Etter hvert som systemkravene øker kan altså brukernes vokodere gis kommando av systemovervåkingsenheten eller nettets basisstasjon om å redusere kodetakten. Vokoderen ifølge oppfinnelsen har en kvalitet slik at det vil være meget liten, om enn målbar, forskjell rent oppfattelsesmessig mellom den tale som er kodet inn ved full takt og den ved halv takt. Av denne grunn kan kvalitetsvirkningen for samband mellom systembrukere hvor tale vokodes ved lavere takt, såsom halv takt være av mindre betydning enn det som vil forårsakes ved en økning i interferensnivået generelt som følge av et øket antall brukere i systemet.
Forskjellige skjemaer kan derfor brukes for å bestemme individuelle vokodertaktgrenser for vokodetaktbestemmelse under det normale. For eksempel kan samtlige brukere i et nett kommanderes til å kode sin tale ved halv takt. En slik aksjon vil i vesentlig grad redusere systeminterferensen og ha nærmest ubetydelig virkning på kvaliteten mellom brukerne, i stedet gis det anledning til et stort antall nye brukere i samme nett. Inntil den totale interferens i systemet økes så mye av de ytterligere brukere at dette merkes, vil man omtrent ikke merke noen degradering i kvaliteten brukerne seg imellom.
Som nevnt tidligere omfatter koderen en kopi eller duplikat av dekoderen for å kunne utføre koding av rammene av talesampler etter prinsippet analyse ved syntese. Som illustrert på fig. 7 mottar dekoderen 234 verdiene L, b, I og G enten via datapakkesubsystemet 238 eller bufferen 222, for rekonstruering av den syntetiserte tale for sammenligning med den innkommende opprinnelige. Utgangene fra dekoderen er størrelsene Mp, Ma og Mw som forklart tidligere. Ytterligere detaljer ved dekoderen 234 som brukt i koderen og i rekonstruering av den syntetiserte tale i den motsatte ende av transmisjonskanalen skal nå gjennomgås sammen med omtale av fig. 19-24.
Fig. 19 viser et flytdiagram over en typisk utførelse av oppfinnelsens dekoder. På grunn av den felles oppbygging av dekoderen i koderen, og mottakeren vil samtlige ut-førelser gjennomgås under ett. Fig. 19 viser særlig dekoderen i enden av transmisjonskanalen siden data som mottas der må være forhåndsprosessert i dekoderen, mens de aktuelle data (takten, I, G, L og b) i dekoderen mottas direkte fra subsystemet 238 eller bufferen 222. Grunnfunksj onene er imidlertid de samme for både koder og dekoder.
På samme måte som tidligere, gjennomgåelsen av fig. S og omtalen av hver kodebokunderramme innhentes kodebokvektoren som bestemmes av indeksen I fra kode-boklageret. Vektoren multipliseres med kodebokvinningen G og filtreres deretter av tone-høydefilteret for hver tonehøydeunderramme slik at man kommer frem til formantresidualet. Dette filtreres av formantfilteret og føres så gjennom et adaptivformantpostfilter under automatisk forsterkningsregulering (AGC), for å frembringe utgangstalesignalet.
Selv om. lengden av kodebok- og tonehøydeunderrammen variere utføres dekodingen i løpet av 40 samplingsblokker for å lette implementeringen. De komprimerte data som mottas deles først opp i størrelsene G, I, L, b og LSP. LSP-frekvensene må prosesseres gjennom sine respektive inverskvantiseringskretser og DPCM-dekodere slik det er forklart senere i forbindelse med fig. 22. Tilsvarende må kodebokvinningene prosesseres på analog måte, med unntak av det som gjelder dataforskyvningen. Også tonehøydehevingen inverskvantiseres. Disse parametere føres deretter til hver dekodeunderramme hvor to sett kodebokparametere (G og I), ett sett tonehøydeparametere {b og L) og ett sett LPC-koeffisienter trengs for å frembringe 40 utgangssampler. Fig. 20 og 21 illustrerer typiske under-rammedekodeparametere for de forskjellige takter og andre rammebetingelser.
For rammer med full takt foreligger åtte sett mottatte kodebokparametere og fire sett mottatte tonehøydeparametere. LSP-frekvensene interpoleres fire ganger for å frembringe fire sett LSP-frekvenser. Parametrene som mottas og den tilsvarende underrammeinformasjon er satt opp i fig. 20a.
For halvtaktrammer gjentas hvert sett av de-fire mottatte kodebokparametere én gang, og likeledes gjentas hvert sett av de to mottatte tonehøydeparametere én gang. LSP-frekvensene interpoleres tre ganger for å frembringe fire sett LSP-frekvenser. De mottatte parametere og den tilsvarende underrammeinformasjon er satt opp i fig. 20b.
For kvarttaktsrammer gjentas de to mottatte kodebokparametere fire ganger, settet tonehøydeparametere gjentas også fire ganger, mens LSP-frekvensene interpoleres én gang for å frembringe to sett frekvenser. De mottatte parametere og den tilsvarende underrammeinformasjon er satt opp i fig. 20c.
For åttedelsrammer brukes settet mottatte kodebokparametere over hele rammen, og tonehøydeparametere foreligger ikke, mens tonehøydehevingen rett og slett settes til null. LSP-frekvensene interpoleres én gang for å frembringe ett sett frekvenser. Parametrene som mottas og den tilsvarende underrammeinformasjon er satt opp i fig. 20d.
Unntaksvis kan talepakkene blankes ut i den hensikt at CDMA-basisstasjonen eller nettets mobilstasjon i stedet skal sende eller overføre signalinformasjon. Når vokoderen i slike tilfeller mottar en blank ramme fortsetter den med ubetydelig modifikasjon av den tidligere rammes parametere, mens kodebokvinningen settes til null. Den tidligere rammes tone-høydeparametere brukes også i den etterfølgende, aktuelle ramme, med unntak av at tone-høydevinningen begrenses til én eller mindre. Den tidligere rammes LSP-frekvenser brukes som før uten interpolasjon. Merk at kode- og dekodeenden fremdeles er synkronisert og at vokoderen er i stand til å "hente seg opp igjen" fra en blank ramme meget raskt. Parametrene som mottas og den tilsvarende underrammeinformasjon er satt opp i fig. 21a.
I det tilfelle at en ramme tapes på grunn av kanalfeil prøver vokoderen å maskere eller eliminere denne feil ved å opprettholde en fraksjon av den tidligere rammes energi og sørge for en jevn overgang til bakgrunnsstøyen. I dette tilfelle kan tonehøydevinningen settes til null, en vilkårlig kodebok velges ved å bruke den tidligere rammes kodebokindeks pluss 89, og kodebokvinningen settes til 0,7 ganger den tidligere rammes tilsvarende verdi. Det skal bemerkes at det er ikke noe magisk med tallet 89, det er bare en hensiktsmessig måte å velge en kvasitilfeldig kodebokvektor på. Den tidligere rammes LSP-frekvenser tvinges til å avta mot sin basisverdi på følgende måte:
LSP-frekvensforskyvningsverdiene er vist i tabell 5. Parametrene som mottas og den tilsvarende underrammeinformasjon er satt opp i fig. 2 lb.
Hvis takten ikke kan bestemmes i mottakeren vrakes pakken og sletting iverksettes. Hvis imidlertid mottakeren bestemmer at det er stor sannsynlighet at rammen ble sendt ved rull takt selv om den inneholdt feil vil følgende utføres: Som gjennomgått tidligere for full takt vil den komprimerte talepakkes data beskyttes av en intern CRC som søker å beskytte de oppfattelsesmessig mest følsomme bit. I dekodeenden beregnes syndromet som den resterende del etter divisjon av den mottatte vektor med g(x) i henhold til ligning (46). Hvis syndromet indikerer feilfrihet, aksepteres pakken uansett hva totalparitetsbiten angir. Hvis imidlertid syndromet indikerer en enkelt feil korrigeres denne hvis samme bit ikke stemmer, mens hvis syndromet indikerer mer enn én feil vrakes pakken. Hvis en ukorrigerbar feil dukker opp i denne blokk vrakes pakken og sletting settes i gang, ellers settes tonehøydehevingen til null, mens de øvrige parametere brukes som mottatt med korreksjonene, slik det fremgår av fig. 21c.
Postfiltrene som brukes i denne implementering ble først beskrevet i artikkelen "Real-Time Vector APC Speech Coding At 4800 BPS with Adaptive postfiltering" av J.H. Chen et al., Proe. ICASSP, 1987. Siden taleformantene oppfattelsesmessig er viktigere enn "bølgedalene" mellom dem aksentuerer eller hever postfilteret formantene noe for å bedre persepsjonen og dermed kvaliteten av den kodede tale. Dette gjøres ved å skalere polene i formantsyntesefilteret radialt mot origo. Det er imidlertid slik at et såkalt allpols postfilter generelt innfører en spektral helling som fører til noe forvrengning av den filtrerte tale, idet forvrengningen gjeme arter seg som en slags utviskning eller dempning slik at talen blir mer ullen. Den spektrale helling av et slikt allpols postfilter reduseres ved å tilføye nuller som har samme fasevinkel som polene, men som har mindre radius, hvilket fører til at postfilterets overføringskarakteristikk blir:
hvor A(z) er formantprediksjonsfilteret, mens verdiene p og a er postfilterets skaleringsfaktorer, idet p settes lik 0,5 mens a settes lik 0,8.
Et såkalt AB-filter, idet forkortelsen står for "adaptive brightness" eller adaptiv klar-eller tydelighet av talen", er tilføyd for ytterligere å kompensere for den spektrale helling som innføres av formantpostfilteret. AB-ftlteret har overføringsfunksjon av formen:
hvor verdien av x (koeffisienten av et enkeltuttaksfilter) bestemmes av den gjennomsnittlige verdi av LSP-frekvensene som gir tilnærming av endringen i den spektrale helling av A(z).
For å hindre store utsving som følge av postfiltreringen har man lagt inn en AGC-sløyfe for å skalere taleutgangen slik at den tilnærmelsesvis får samme energi som den ikke postfiltrerte tale. Forsterkningsreguleringen utføres ved å dele kvadratsummen av de 40 filterinngangssampler med kvadratsummen av de 40 filterutgangssampler slik at man får den inverse filteroverføringskarakteristikk. Kvadratroten av denne forsterkningsfaktor glattes deretter i henhold til ligningen:
deretter multipliseres filterutgangen med den glattede utgang for å frembringe talesignalet på utgangen.'
I henhold til fig. 19 føres data fra kanalen sammen med informasjon om takten, enten for overføring sammen med de aktuelle kanaldata eller utledet på annen måte, og over-føringen skjer til det subsystem 700 som kan kalles "datautpakkingssystemet". I en utførelse for et CDMA-system kan en taktbestemmelse foretas ut fra feilhyppigheten for de mottatte data når dekodingen skjer for hver av de forskjellige taktverdier. I subsystemet 700 utføres ved full takt en kontroll av typen CRC for feil, og resultatet føres til et subsystem 702 for underrammen. Subsystemet 700 gir indikasjon på unormale rammeforhold såsom en blank ramme, en slettet ramme eller en feilaktig, via brukbare data til subsystemet 702. Subsystemet 700 overfører taktverdien sammen med parametrene I, G, L og b for den aktuelle ramme til subsystemet 702. Ved å tilveiebringe størrelsene I og G kan fortegnbiten for G kontrolleres i subsystemet 702, og hvis den er negativ trekkes verdien 89 fra, mod 128, størrelsen I. Videre utføres i dette subsystem en invers kvantisering og en DPCM-dekoding av størrelsen G, mens tonehøydehevingen inverskvantiseres.
Subsystemet 700 gir også ut taktverdien og LSP-frekvensene til et subsystem 704 for invers kvantisering og interpolasjon av LSP-verdiene. Subsystemet 700 gir videre informasjon vedrørende forhold såsom blank, slettet eller feilaktig ramme med brukbare data til subsystemet 704. En dekodeteller 706 for underrammen gir indikasjon om tellerverdiene i og j i underrammen for begge subsystemer 702 og 704.
I subsystemet 704 inverskvantiseres og interpoleres LSP-frekvensene. Fig. 22 illustrerer en utførelse av inverskvantiseringsdelen av subsystemet 704, mens interpolasjons-delen er i alt vesentlig identisk med den som er beskrevet i forbindelse med fig. 12. Fig. 22 viser at inverskvantiseringsdelen består av en inverskvantiseringskrets 750 som er likt oppbygget med kretsen 468 vist på flg. 12 og arbeider på samme måte. Kretsens utgang er ført til en summeringskrets 752 hvis andre inngang kommer fra en multiplikator 754. Summeringskretsens 752 utgang går til et register 756 for lagring og tilførsel til multiplikatoren for multiplikasjon med konstanten 0,9 i denne. Summeringskretsens utgang føres også til en etterfølgende summeringskrets 758 hvor en forskyvningsverdi tilføres for å oppnå den opprinnelige LSP-frekvens o);. Tilordningen av disse frekvenser besørges av en logisk krets 760 (se fig. 23) som bevirker at LSP-frekvensene får en minste innbyrdes avstand. Vanligvis vil det ikke være behov for på denne måte å tvinge frekvensene fra hverandre hvis ikke det foreligger en feil i overføringen. LSP-frekvensene interpoleres som gjennomgått i forbindelse med fig. 13 og med henvisning til fig. 20a-20d og 21 a-21 c.
Ser vi igjen på fig. 19 fremgår at lageret 708 er koplet til subsystemet 704 for lagring av den tidligere rammes LSP-frekvenser og kan også brukes til å lagre forskyvningsverdiene bcjj. Disse tidligere rammeverdier brukes ved interpolasjonen for samtlige taktverdier. Når det gjelder rammer som er blanke, slettet eller er feilaktige, men som likevel antas å inneholde brukbare data, brukes den tidligere LSP-frekvens cj^f.j i samsvar med diagrammet på fig. 21a-21c. I respons på en blank ramme indikert av subsystemet 700 gjenfinner subsystemet 704 den foregående rammes LSP-frekvenser, idet de ligger lagret i lageret 708, for bruk i den aktuelle ramme. I respons på en rammesletteindikasjon finner også subsystemet 704 tilbake til den tidligere rammes LSP-frekvenser fra lageret 708, sammen med forskyvningsverdiene, hvorved den aktuelle rammes LSP-frekvenser kan settes opp slik som gjennomgått ovenfor. Ved utførelse av denne oppsettingsberegning trekkes den lagrede forskyvningsverdi fra den tidligere rammes LSP-frekvens i en summeringskrets, og resultatet multipliseres i en multiplikator med en konstant verdi på 0,9, hvoretter resultatet summeres i en summeringskrets, med den lagrede forskyvningsverdi. I respons på en feilaktig ramme med brukbar dataindikasjon interpoleres LSP-frekvensene som for full takt hvis CRC finnes å være i orden.
LSP-frekvensene overføres til transformasjonssubsystemet 710 hvor de blir omvandlet tilbake til LPC-verdier, idet dette subsystem hovedsakelig er identisk med det tilsvarende subsystem 218 eller 228 vist på fig. 7 og som allerede er beskrevet i forbindelse med fig. 13. LPC-koeffisientene 04 videreføres deretter til både formantfilteret 714 og formantpostfilteret 716. LSP-frekvensene midles også over underrammen i et LSP-midlingssubsystem 712 og føres til det adaptive klarhetsfilter 718 som verdien jc.
Subsystemet 702 mottar parametrene I, G, L og b for rammen fra subsystemet 700 sammen med indikasjon på hvilken takt som gjelder og om det foreligger en unormal ramme. Subsystemet 702 mottar også fra telleren 706 tellersifferet j for hver i-te telling i hver dekodeunderramme 1-4. Dette subsystem 702 er videre koplet til et lager 720 for lagring av den tidligere rammes verdier G, I, L og b for bruk under unormale rammeforhold. Subsystemet 702 gir under normale rammeforhold, med unntak av åttedels takt kodebokindeksverdien Ij til kodeboken 722, kodebokvinningsverdien Gj til multiplikatoren 724 og tonehøydeverdiene L og b til tonehøydefilteret 726 slik det er illustrert på fig. 20a-20d. For åttedels takt sendes en "pakkekime" ("packet seed") siden det ikke foreligger noen verdi for den sendte kodebokindeks, idet denne "kime" er den 16-bits parameterverdi (fig. 2d) som for åttedels takt overføres til kodeboken 722 sammen med en taktindikasjon. Ved unormale rammetilstander overføres verdiene fra subsystemet 702 i henhold til fig. 21a-21c. Videre overføres ved åttedels takt en indikasjon til kodeboken 722 slik det fremgår av fig. 23.
I respons på indikasjonen blank ramme fra subsystemet 700 finner subsystemet 702 tilbake til den foregående rammes verdier L og b, med unntak av at hevingen begrenses til én eller mindre. Disse verdier ligger lagret i lageret 708 for bruk i underrammene for dekoding fra den aktuelle ramme. Videre er det slik at man ikke da har noen kodebokindeks I, og G settes lik null. I respons på en rammesletteindikasjon finner subsystemet 702 på ny tilbake til den foregående rammes kodebokindeks fra lageret 720 og summerer i en summeringskrets verdien 89 til den funne verdi. Den tidligere rammes underrammeverdi G multipliseres i en multiplikator med konstanten 0,7 for å frembringe den gjeldende G-verdi for underrammen. Ingen b-verdi for tonehøyden fremkommer siden L = 0.1 respons på en rammefeil med indikasjon om brukbare data brukes kodebokindeksen og -vinningen som i en ramme med full takt, under forutsetning av at CRC er i orden, mens b heller ikke her forefinnes, siden L = 0.
Som forklart med visning til koderens dekoder innenfor analyse/synteseteknikk brukes kodebokindeksen I som en første kodebokverdi for overføring til multiplikatoren 704 som multipliserer verdien med utgangsverdien fra kodeboken 722, hvorved resultatet føres til tonehøydefilteret 726. Dette filter bruker verdiene L og b til å frembringe formantresidualet som på sin side føres ut til formantfilteret 714 hvor LPC-koeffisientene brukes til filtrering av formantresidualet slik at talen kan gjenskapes. I mottakerens dekoder filtreres på ny den rekonstruerte tale ved hjelp av formantpostfilteret 716 og det adaptive klarhetsfilter 718. Forsterkningssløyfen 728 brukes på utgangen av formantfilteret 714 og formantpostfilteret 716 hvis utgang i multiplikatoren 730 multipliseres med utgangen fra filteret 718. Utgangen fra multiplikatoren 730 er den rekonstruerte tale som i dette tilfelle omvandles til analog form ved hjelp av kjent teknikk og presenteres for lytteren. I dekoderen i koderen legges perseptiweiefilteret inn ved utgangen for oppdatering av lagrene.
Det vises nå til fig. 23 som illustrerer ytterligere detaljer ved implementeringen av selve dekoderen. Kodeboken 722 omfatter i dette tilfelle et lager 750 (merk at enkelte av henvisningstallene ikke viser samme element som i fig. 22) tilsvarende det lager som er beskrevet i forbindelse med fig. 17. For å lette forklåringen er lageret 750 noe annerledes enn før, det samme gjelder adresseringen av det. Kodeboken 722 består videre av en vender 752 (uten henvisningstall på fig. 23), en multipleksenhet 753 og en PN-generator 754. Venderen 752 arbeider under kommando av kodebokindeksen for å tilkople eller peke på indeksadressen i lageret 750, slik det ble beskrevet i forbindelse med fig. 17. Lageret 750 er et "sirkulært" eller permuterende lager med venderen pekende på den første lagerplass og med verdiene forskjøvet gjennom lageret før utgangen. Kodebokverdiene føres ut fra lageret 750 via venderen og til multipleksenheten 753 som er respons på taktartene full, halv og kvart for å gi en utgang av de verdier som er tilveiebrakt gjennom venderen 752 til kode-bokvinningsforsterkeren, multiplikatoren 724. Multipleksenheten 753 har også respons overfor åttedelstaktindikasjon for å velge utgangen fra PN-generatoren 754 for å føre ut kodeboken 722 til multiplikatoren 724.
For å opprettholde god talekvalitet ved CELP-koding må koderen og dekoderen ha samme verdier lagret i deres interne filterlagere. Dette utføres ved å sende ut kodebokindeksen slik at dekoderens og koderens filtere aktiveres av samme sekvens av verdier. For den aller beste talekvalitet består disse sekvenser imidlertid av hovedsakelig nuller og med enkelte spisser fordelt mellom dem. Denne type aktivering er ikke optimal for koding av bakgrunnsstøyen.
Ved koding av bakgrunnsstøyen, utført ved laveste takt kan en kvasitilfeldig sekvens brukes for aktivering av filtrene. For å sikre at filterlagrene er like i koderen og dekoderen må de to kvasitilfeldige sekvenser være like. En "kime" må av denne grunn sendes over fra senderens til mottakerens dekoder. Siden det ikke er noen ytterligere bit som kan brukes for å overføre en slik "kime" kan selve transmisjonspakkens bit brukes som om de utgjorde et nummer. Denne teknikk kan utføres siden man ved lav takt har nøyaktig samme CELP-analyse/syntese for å bestemme kodebokens vinning og indeks. Forskjellen er at kodebokindeksen kastes ut, i stedet oppdateres kodefilterlagrene ved hjelp av en kvasitilfeldig sekvens. Derfor kan kimen for eksitering bestemmes etter at analysen er utført. For å være sikker på at datapakkene ikke periodisk veksler mellom forskjellige gitte bitmønstere legges fire forskjellige bit inn i åttedelspakken i stedet for kodebokindeks-verdiene. Derfor gjelder for pakkens kime den 16-bits verdi som det ble referert til i forbindelse med fig. 2d.
PN-generatoren 754 er bygget opp med velkjent teknikk og kan implementeres med forskjellige algoritmer. I det viste eksempel er den algoritme som brukes av det slag som er beskrevet i artikkelen "DSP chips can produce random numbers using proven algorithm" av Paul Mennen, EDN, 21. januar 1991. Den overførte bitpakke brukes som kime (fra subsystemet 700 i henhold.til fig. 18) for å frembringe sekvensen. I én utførelsesform multipliseres kimen med verdien 521 som er verdien 259 tillagt. Fra dette resultat i form av en verdi brukes de minst signifikante bit (MSB) som et tilordnet 16-bits nummer. Verdien brukes derved som kime ved frembringelse av den neste kodebokverdi. Sekvensen som frembringes av PN-generatoren er normalisert med hensyn til varians slik at denne blir 1,0.
Hver utgående verdi fra kodeboken 722 multipliseres i multiplikatoren 724 med verdien G som fremkommer under dekodeunderrammen. Denne verdi tilføres som den ene inngang på en summeringskrets 756 koplet til tonehøydefilteret 726. Dette består på sin side av en multiplikator 758 og et lager 760. Senkningen L bestemmer posisjonen av en tapping på lageret 760, koplet til en multiplikator 758. Utgangen fra lageret 760 multipliseres i en multiplikator 758 med verdien b og med resultatet ført til summeringskretsen 756. Utgangen fra summeringskretsen 756 går til inngangen på et lager 760 som består av en rekke forsinkelseselementer såsom et skiftregister. Verdiene blir forskjøvet i lageret 760 (i en retning som er indikert med pilen) og ført ut til en bestemt tapping som bestemmes av verdien L. Siden verdiene forskyves gjennom lageret 760 kommer verdier som er eldre enn 143 forskyvninger til å vrakes. Utgangen fra summeringskretsen 756 er også ført som en inngang til formantfilteret 714,
Utgangen fra summeringskretsen 756 er ført til en inngang på en summeringskrets 762 på formantfilteret 714 som videre omfatter en multiplikatorbank 764a-764j og et lager 766. Utgangen fra summeringskretsen 762 er ført til en inngang på det etterfølgende lager 766 som også er bygget opp med en rekke tappede forsinkelseselementer såsom et skiftregister. Verdiene forskyves i lageret 766 (i den retning som er indikert med en pil) og "dumpes" i enden. Hvert element har en tapping som tilveiebringer den verdi som er lagret som en utgang til sin respektive multiplikator i banken 764a-764j. Hver av bankens multiplikatorer mottar også sin respektive LPC-koeffisient 04-a^ for multiplikasjon med utgangen fra lageret 766. Utgangen fra summeringskretsen 762 er ført til formantfilteret 714.
Utgangen fra formantfilteret 714 er ført til en inngang på det etterfølgende formantpostfilter 716 og forsterkningsreguleringssubsystemet 728 (AGC). Formantpostfilteret består av summeringskretser 768 og 770 med tilhørende lager 772 og multiplikatorer 774a-774j, 776a-776j, 780a-780j og 782a-782j. Siden verdiene rulleres eller forskyves gjennom lageret 772 er det anordnet utganger ved de forskjellige tappinger, for uttak til multiplikasjon med de skalerte LPC-koeffisientverdier, for summering i summeringskretsene 768 og 770. Utgangen fra formantpostfilteret 716 er ført som en inngang til det etterfølgende filter 718 som utfører adaptiv klarhetsifltrering.
Filteret 718 består av summeringskretsene 784 og 786, registrene 788 og 790 og multiplikatorene 792 og 794. Fig. 24 viser skjematisk karakteristikken for et slikt filter. Utgangen fra formantpostfilteret 716 er ført til den ene inngang på summeringskretsen 784 hvis andre inngang tilføres signaler fra utgangen på multiplikatoren 792. Utgangen på summeringskretsen 784 er ført til registeret 788 og signalet på denne utgang lagres én periode og føres først ut den neste periode til multiplikatorene 792 og 794 sammen med verdien - k fra LSP-midlerkretsen 712 vist på fig. 19. Utgangen fra multiplikatorene 792 og 794 er ført til sine respektive summeringskretser 784 og 786, og utgangen fra den siste er ført til subsys-ternet 728 (AGC) og til skiftregisteret 790. Dette register brukes som en forsinkelseslinje for å. sikre koordinering mellom datautgangen fra formantfilteret 714 til subsystemet 728 og de data som er ført til filteret 718 via formantpostfilteret 716.
Subsystemet 728 mottar data fra formantpostfilteret 716 og filteret 718 for å skalere talens utgangsenergi til den blir sentrert i forhold til energien i den opprinnelige tale som er ført inn til formantpostfilteret 716 og filteret 718. Subsystemet 728 består av multiplikatorene 798, 800,802 og 804, summeringskretsene 806, 808 og 810, registrene 812, 814 og 820, en divisjonskrets 816 og et kvadratrotelement 818. De 40 utgangssampler fra formantpostfilteret 716 kvadreres i multiplikatoren 798 og summeres i en akkumulator som består av en summeringskrets 806 og et register 812 for å frembringe verdien "x". Tilsvarende kvadreres de 40 utgangssampler fra filteret 718 før de føres til registeret 790 i multiplikatoren 800 og summeres i en akkumulator som består av summeringskretsen 808 og registeret 814 for å frembringe verdien "y". Verdien "y" divideres med verdien "x" i divisjonskretsen 816 for å danne filtrenes inverse overføringsfunksjon. Kvadratroten av denne inverse overføringsfunksjon utføres i elementet 818, og resultatet glattes deretter. Glattingen utføres ved å multiplisere den aktuelle verdi G med den konstante verdi 0,02 i multiplikatoren 802 og med resultatet summert i summeringskretsen 810 med resultatet av 0,98 ganger den foregående verdi G som ble beregnet ved hjelp av registeret 820 og multiplikatoren 804. Utgangen fra filteret 718 multipliseres deretter med den glattede inverse overføringsfunksjon i multiplikatoren 730 for å tilveiebringe den endelige rekonstruerte tale. Denne tale er omvandlet til analog form ved å bruke forskjellige velkjente omvandlingsteknikker, før talen presenteres for brukeren.
Det skal fastslås at utførelsen av denne oppfinnelse slik den er beskrevet her er i form av et eksempel, og at forskjellige andre utførelsesformer også vil kunne være funk-sjonsmessige ekvivalenter. Oppfinnelsen kan brukes i en signalprosessor for digitale signaler under hensiktsmessig programstyring for utføring av talesampling og dekoding av kodet tale. Andre anvendelser kan være for spesifiserte integrerte kretser (ASIC) hvor storskalaintegrering inngår (VLSI).
Beskrivelsen og illustrasjonene er utført slik at hensikten er at en fagutdannet person skal kunne utføre og/eller utøve oppfinnelsen. De forskjellige modifikasjoner vil for samme person være innlysende, og hovedprinsippene vil kunne brukes for andre utførelsesformer uten bruk av oppfinnerisk virksomhet. Således er ikke oppfinnelsen ment å være begrenset til de utførelser som er vist og beskrevet, men vil dekke det videst mulige aspekt i samsvar med prinsippene og de nye trekk som er angitt.

Claims (19)

1. Apparat for maskering av feil i rammer med data, karakterisert ved: midler (700, 704) for å motta slike rammer og gi en indikasjon på eventuelle iammeunormaliteter i en aktuell ramme med data, et lager (708,720) for lagring av data fra minst én tidligere ramme og formidling av disse data fra en bestemt tidligere ramme i respons på indikasjonen av en rammefeil, og prosessmidler (704) for, i respons på indikasjonen av en rammeunormalitet, å prosessere de fremtatte data fra den bestemte tidligere ramme, for å redusere verdier som representeres av disse data og frembringe en ramme med data for bruk som den aktuelle ramme.
2. Apparat ifølge krav 1, karakterisert ved at den minst ene tidligere ramme omfatter en siste ramme med data som kan dekodes.
3. Apparat ifølge krav 1 eller 2, karakterisert ved at hver ramme omfatter data som representerer en kodebokindeks (I), en kodebokgevinst (G), en tonehøydeforskyvning (L) og en tonehøydegevinst (b).
4. Apparat ifølge krav 3, karakterisert ved at: midlene (700,704) for indikasjon av eventuelle rammeunormaliteter er innrettet for å gi indikasjon av en blank ramme, og at prosessmidlene (704) er innrettet for, i respons på indikasjonen av en blank ramme, å fremstille, for bruk som den aktuelle ramme, en ramme med data og som omfatter den tidligere rammes tonehøydeforskyvning (L) og dens tonehøydegevinst (b) begrenset til en verdi på en eller mindre.
5. Apparat ifølge krav 3, karakterisert ved at midlene (700,704) for indikasjon av eventuelle rammeunormaliteter er innrettet for å gi en indikasjon av en slettet ramme, og at prosessmidlene (704) er innrettet for, i respons på indikasjonen av en slettet ramme, å frembringe, for bruk som den aktuelle ramme, en ramme hvis data omfatter den tidligere rammes kodebokindeks (I) til hvilken indeks en konstant verdi er tilføyd.
6. Apparat ifølge krav 4, karakterisert ved at den konstante verdi er 89.
7. Apparat ifølge krav 5 eller 6, karakterisert ved at prosessmidlene (704) er innrettet for å gi respons overfor en indikasjon på en slettet ramme ved å frembringe, for bruk som den aktuelle ramme, en ramme med data som omfatter den tidligere rammes kodebokgevinst multiplisert med en konstant verdi.
8. Apparat ifølge krav 7, karakterisert ved at den konstant verdi er 0,7.
9. Apparat ifølge ett av kravene 5-8, karakterisert ved at: den minst ene tidligere ramme omfatter data som representerer et linjespektralpar (LSP) og en forskyvningsverdi, og at prosessmidlene (704) er innrettet for å gi respons overfor indikasjonen av en slettet ramme ved å trekke forskyvningsverdien fra de data som representerer LSP-verdien, for å frembringe et resultat, hvoretter resultatet multipliseres med en konstant verdi.
10. Apparat ifølge krav 3, karakterisert ved at: midlene (700, 704) for å frembringe en eventuell rammeunormalitet er innrettet for å gi en indikasjon på en feilramme med brukbare data, og at prosessmidlene (704) er innrettet for å gi respons på indikasjonen av en slik feilramme ved å frembringe, for bruk som den aktuelle ramme, en ramme med data som omfatter den tidligere rammes kodebokindeks (I) og dens kodebokgevinst (G).
11. Fremgangsmåte for maskering av feil i rammer med data, karakterisert ved: mottaking av slike rammer, generering av en indikasjon på en eventuell rammeunormalitet i en aktuell ramme, lagring av data for minst én tidligere ramme og overføring av disse data fra en bestemt tidligere ramme i respons på indikasjonen av en rammefeil, prosessering av disse data fra den bestemte tidligere ramme i respons på indikasjonen at en rammeunormalitet, for å redusere verdier som representeres av disse data, og frembringelse av en ramme for bruk som den aktuelle ramme med data.
12. Fremgangsmåte ifølge krav 11, karakterisert ved at den minst ene tidligere ramme omfatter en siste ramme med data som dekodes.
13. Fremgangsmåte ifølge krav 11 eller 12, karakterisert ved at hver ramme omfatter data som representerer en kodebokindeks (I), en kodebokgevinst (G), en tonehøydeforskyvning (L) og en tonehøydegevinst (b).
14. Fremgangsmåte ifølge krav 13, karakterisert ved at: indikasjonen av en rammeunormalitet omfatter indikasjon av en blank ramme, og at responsen på indikasjonen av en slik blank ramme innebærer å frembringe en ramme som omfatter den tidligere rammens tonehøydeforskyvning (L) og denne rammes tonehøydegevinst (b), begrenset til en verdi på 1 eller mindre, for bruk som den aktuelle ramme med data.
15. Fremgangsmåte ifølge krav 13, karakterisert ved at: indikasjonen av en rammeunormalitet omfatter indikasjon av en slettet ramme, og at responsen overfor indikasjon av en slik slettet ramme innebærer å frembringe en ramme som omfatter den tidligere rammes kodebokindeks (I) til hvilken en konstant verdi er tilføyd, for bruk som den aktuelle ramme med data.
16. Fremgangsmåte ifølge krav 15, karakterisert ved at den konstante verdien er 89.
17. Fremgangsmåte ifølge krav 15 eller 16, karakterisert ved at responsen overfor en indikasjon av en slettet ramme omfatter å frembringe en ramme som omfatter den tidligere rammes kodebokgevinst multiplisert med en konstant verdi, som bruk som den aktuelle ramme med data.
18. Fremgangsmåte ifølge krav 17, karakterisert ved at den konstante verdi er 0,7.
19. Fremgangsmåte ifølge krav 13, karakterisert ved at: indikasjonen av en rammeunormalitet omfatter indikasjon av en slettet ramme med brukbare data, og at responsen overfor indikasjonen av en feilramme innebærer frembringelse av en ramme som omfatter den tidligere rammes kodebokindeks og denne rammes kodebokgevinst (G), for bruk som den aktuelle ramme med data.
NO20050567A 2005-02-02 2005-02-02 Metode og apparat for maskering av feil i rammer med data. NO322638B1 (no)

Priority Applications (1)

Application Number Priority Date Filing Date Title
NO20050567A NO322638B1 (no) 2005-02-02 2005-02-02 Metode og apparat for maskering av feil i rammer med data.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NO20050567A NO322638B1 (no) 2005-02-02 2005-02-02 Metode og apparat for maskering av feil i rammer med data.

Publications (3)

Publication Number Publication Date
NO20050567D0 NO20050567D0 (no) 2005-02-02
NO20050567L NO20050567L (no) 2005-02-02
NO322638B1 true NO322638B1 (no) 2006-11-13

Family

ID=35220604

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20050567A NO322638B1 (no) 2005-02-02 2005-02-02 Metode og apparat for maskering av feil i rammer med data.

Country Status (1)

Country Link
NO (1) NO322638B1 (no)

Also Published As

Publication number Publication date
NO20050567D0 (no) 2005-02-02
NO20050567L (no) 2005-02-02

Similar Documents

Publication Publication Date Title
NO319559B1 (no) Fremgangsmate og koder for taleprosessering ved forskjellig overforingstakt, saerlig ved lineaer prediktiv koding (LPC)
JPH09152898A (ja) 符号化されたパラメータのない音声信号の合成法
EP0747884A2 (en) Codebook gain attenuation during frame erasures
JPH02231825A (ja) 音声符号化方法、音声復号方法、およびこれらを使用した通信方法
NO322638B1 (no) Metode og apparat for maskering av feil i rammer med data.
NO322658B1 (no) Vokoder med varierbar overforingshastighet
Taniguchi et al. Combined source and channel coding based on multimode coding
JPH09149104A (ja) 擬似背景雑音生成方法
JPH02298999A (ja) 音声符号化方式

Legal Events

Date Code Title Description
MK1K Patent expired