FI120117B - Vokooderi-ASIC - Google Patents

Vokooderi-ASIC Download PDF

Info

Publication number
FI120117B
FI120117B FI954920A FI954920A FI120117B FI 120117 B FI120117 B FI 120117B FI 954920 A FI954920 A FI 954920A FI 954920 A FI954920 A FI 954920A FI 120117 B FI120117 B FI 120117B
Authority
FI
Finland
Prior art keywords
sequence
ram
codebook
input
values
Prior art date
Application number
FI954920A
Other languages
English (en)
Swedish (sv)
Other versions
FI954920A0 (fi
FI954920A (fi
Inventor
John G Mcdonough
Chienchung Chang
Randeep Singh
Charles E Sakamaki
Ming-Chang Tsai
Prashant Kantak
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22729345&utm_source=***_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=FI120117(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of FI954920A0 publication Critical patent/FI954920A0/fi
Publication of FI954920A publication Critical patent/FI954920A/fi
Application granted granted Critical
Publication of FI120117B publication Critical patent/FI120117B/fi

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • G10L19/07Line spectrum pair [LSP] vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0011Long term prediction filters, i.e. pitch estimation
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0013Codebook search algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Gyroscopes (AREA)
  • Electrochromic Elements, Electrophoresis, Or Variable Reflection Or Absorption Elements (AREA)
  • Glass Compositions (AREA)
  • Executing Machine-Instructions (AREA)
  • Saccharide Compounds (AREA)
  • Stored Programmes (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Analogue/Digital Conversion (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Peptides Or Proteins (AREA)
  • Error Detection And Correction (AREA)

Description

VOKOODERI-ASIC
KEKSINNÖN TAUSTA 5 I. Keksinnön ala
Esillä oleva keksintö liittyy puheenkäsittelyyn. Erityisesti esillä oleva keksintö liittyy uuteen ja ke-10 hittyneeseen menetelmään ja laitteeseen vokooderin toteuttamiseksi sovelluskohtaiselle integroidulle piirille (ASICille).
II. Liittyvän alan kuvaus 15 Äänen lähettäminen digitaalisilla tekniikoilla on levinnyt laajalle, erityisesti kaukoetäisyyksillä ja di-gitaaliradiopuhelinsovelluksissa. Jos puhetta lähetetään yksinkertaisesti näytteistämällä ja digitoimalla, 20 vaaditaan datanopeus luokkaa 64 kilobittiä sekuntia kohden (kbps), jotta saavutetaan analogisten puhelimien puheenlaatua vastaava laatu. Kuitenkin käyttämällä puheen analysointia, sitä seuraavaa sopivaa koodausta, lähetystä ja syntetisointia vastaanottimessa, voidaan 25 saavuttaa merkittävä datanopeuden pudotus. Laite, joka suorittaa puheen analysoinnin ja koodauksen lähetti-messä ja syntetisoinnin vastaanottimessa tunnetaan vo-kooderina.
30 Viimeaikainen kehitys digitaalisten solukkopuhelinten standardeissa ja järjestelmissä on lisännyt näiden vo-koodereiden tarvetta. Tarve kehittyneille vokoodausal 2 goritmeille, jotka käyttävät saatavilla olevan taajuuskaistan tehokkaammin ja palauttavat lähdepuheen tarkemmin, on lisännyt suuremman laskentakapasiteetin 5 omaavien prosessorien tarvetta suorittamaan näitä monimutkaisempia vokoodausalgoritmeja.
Vokooderit käyttävät hyväkseen pitkä- ja lyhytkestoisten redundanssien esiintymistä puheessa, mikä vaatii 10 laskennallisesti tehokkaita numeerisia toimintoja.
Jotkin näistä toiminnoista sisältävät pitkäsekvenssi-siä konvoluutioita, matriisin kääntämisiä, pitkäse-kvenssisiä korrelaatioita ja niin edelleen. Näiden operaatioiden suorittaminen reaaliajassa aiheuttamatta 15 sietämättömiä koodaus- ja dekoodausviiveitä puheenlä-hetyksessä vaatii tehokkaat laskentaresurssit.
Digitaalisten signaaliprosessorien (DSP:t) julkistaminen oli tärkeä tekijä vokooderialgoritmien reaaliaika-20 toteutuksissa. DSP:t ovat erityisen tehokkaita suorittaessaan aritmeettisia operaatioita, jotka ovat yleisiä vokooderialgoritmeissa. Edistymiset DSP:issa on lisännyt niiden laskennallista kapasiteettia 40 miljoonaan käskyyn sekunnissa (MIPS) ja sen yläpuolelle.
25
Esimerkkitarkoituksessa käytetty vokoodausalgoritmi on muuttuvanopeuksinen CELP-algoritmi, joka kuvataan yksityiskohtaisemmin US-patenttihakemuksessa sarjanro 08/004,484, joka on jätetty 14.1.1993, nimeltään 30 "Muuttuvanopeuksinen vokooderi" ja jossa haltijana on sama kuin tässä keksinnössä. Yllämainittu hakemus liitetään tähän viittauksella.
3
Taulukossa 1 alla esitetään esimerkkinä olevan vokoo-dausalgoritmin koodausosan ajoaikaprofiili yksittäiselle 20 millisekunnin puhekehykselle toteutettuna 5 käyttäen tyypillistä DSP:tä. Koska esimerkkinä olevan vokoodausalgoritmin koodausosa vaatii merkittävästi enemmän käsittelyä kuin dekoodausosa, vain koodausosa on esitetty yksityiskohtaisesti taulukossa 1. Taulukossa 1 viitattua DSP:tä kellotetaan 40 Mhz:n taajuu-10 della ja se suorittaa aritmeettiset operaatiot ja muut operaatiot yhdessä tai useassa kellojaksossa riippuen operaatioista. Ensimmäinen sarake edustaa esimerkkinä olevaa DSP:tä käyttävän vokoodausalgoritmin pääoperaa-tioita. Toinen sarake edustaa esimerkkinä olevaa 15 DSP:tä käyttävän vokoodausalgoritmin vaatimien kello-jaksojen määrää kunkin tietyn operaation suorittamiseksi. Kolmas sarake edustaa tietyn operaation vaatimaa prosenttiosuutta kokonaisprosessointiajasta. Esi-merkkivokoodausalgoritmissa vaaditaan, että kaikki 20 operaatiot suoritetaan 20 millisekunnissa esimerkkivo-koodausalgoritmin reaaliaikaisilla operaatioilla. Tämä asettaa vaatimuksia algoritmin toteuttavan DSP:n valinnalle niin, että DSP kykenee toimimaan kellotaajuudella tai sen yläpuolella, joka vaaditaan vaaditun kä-25 sittelyn suorittamiseksi 20 millisekunnin kehyksessä. Taulukossa 1 kuvatulle tyypilliselle DSP:lie, tämä rajoittaa kellojen määrän 800000:een.
30 4
Taulukko I
Rutiini 40 Mhz % kaikis- kellot ta LPC-analyysi 24810 3.89 LPC-LSP- 48780 7.65 muunnos
Nopeuspäättely 330 0.05 LSP- 660 0.10 kvantisointi LSP- 1110 0.17 kvantisoinnin palautus LSP/LPC- 34590 5.42 interpolointi Äänentason et- 225570 35.36 sintä
Koodikirjan 262380 41.13 etsintä
Synteteesi 34230 5.37
Pakkaus 5490 0.86
Yhteensä 637950 100.00
Kuten voidaan nähdä taulukosta 1, äänentasoetsintä- ja koodikirjaetsintätoiminteet kuluttavat yli 75 prosent-5 tia käsittelyäjasta vokooderialgoritmin koodausosassa. Koska laskennallisen kuormituksen enemmistö on näissä kahdessa etsintäalgoritmissa, ensisijainen tavoite tehokkaalla vokoodausalgoritmia suorittavalla ASICilla 5 on vähentää näiden kahden algoritmin suorittamiseen käytettävien kellojaksojen määrää.
Esillä olevan keksinnön mukainen menetelmä ja laite 5 vähentävät merkittävästi näiden etsintäalgoritmien suorittamiseen tarvittavien käskyjaksojen määrää. Edelleen esillä oleva keksintö tuo esiin menetelmän ja laitteen, jotka on optimoitu vokoodausalgoritmeille erityisen merkittävien operaatioiden suorittamiseksi 10 tehokkaammin. Esillä olevan keksinnön mukaisen menetelmän ja laitteen sovellukset eivät rajoitu esimerkkinä olevan vokoodausalgoritmin suorittamiseen tai edes puheen koodaukseen tai dekoodaukseen. On ajateltu, että menetelmät ja laite voidaan soveltaa mihin 15 tahansa järjestelmään, joka käyttää digitaalista signaalinkäsittelyalgoritmia, kuten kaiun poistoon ja kanavat as äimiin .
KEKSINNÖN YHTEENVETO
20
Esillä oleva keksintö on uusi ja kehittynyt menetelmä ja laite vokoodausalgoritmin suorittamiseksi.
Tässä kuvattu esillä olevan keksinnön esimerkkisovel-25 lus on muuttuvanopeuksisen CELP-algoritmin, joka kuvataan yksityiskohtaisemmin yllämainitussa patentissa, ASIC-toteutus. Esillä olevan keksinnön ominaisuudet voidaan vastaavasti soveltaa kaikkiin lineaarisesti ennustaviin koodausalgoritmeihin (LPC). Esillä oleva 30 keksintö tuo esiin arkkitehtuurin, joka on optimoitu toteuttamaan vokooderialgoritmi alennetulla määrällä kellotaajuuksia ja pienemmällä tehonkulutuksella. Alkuperäinen optimoinnin äärimmäinen tavoite oli minimoida tehon kulutus. Kellotuksen vähentäminen vaadit- 6 tavan algoritmin suorittamiseksi oli myös tekemisissä kellotaajuuden vähentämisen kanssa vähentäen suoraan tai epäsuoraan tehonkulutusta. Suora vaikutus johtuu tehon kulutuksen ja kellotaajuuden välisestä suhteesta 5 komplementaarisessa metallipuolijohde (CMOS) - laitteessa. Epäsuora vaikutus johtuu neliöllisestä suhteesta tehonkulutuksen ja CMOS-laitteen jännitteen välillä ja kyvystä alentaa jännitettä yhdessä kellotaajuuden kanssa. Vokooderi-ASICin tehokkuuden mitta 10 on kellojaksossa suoritettava prosessointi. Näin ollen tehokkuuden lisääminen vähentää algoritmin suorittamiseen tarvittavien kellojaksojen määrää.
Ensimmäinen menetelmä vokoodausalgoritmin tehokkuuden lisäämiseksi on erityinen DSP-ydinarkkitehtuuri. Esi-15 merkissä oleva DSP-ydin lisää muistin läpäisyä aikaansaamalla kolme hajasaantimuistielementtiä (RAM). Kukin kolmesta RAM-elementistä on osoitettu muistiosoitteen muodostusyksikköön. Tämä muistin kolmeen osaan jakaminen mahdollistaa tehokkaan suorituksen operaatioille, 20 kuten rekursiiviselle konvoluutiolle operandeja antamalla, laskentatuloksille ja talletuksille kaikki yhdessä jaksossa. Operandien haku, tulosten laskenta ja tallennus johdetaan niin, että täydellinen rekursiivinen konvoluutio yhdelle tulokselle suoritetaan kolmen 25 jakson aikana, mutta uusi tulos muodostetaan joka jakso. Kolmeen osaan jaettu muisti vähentää kellojaksojen tarvetta muita toimintoja varten vokoodausalgoritmis-sa. Rekursiivisen konvoluution tehokas suorittaminen aikaansaa merkittävimmät säästöt vokooderialgoritmis-30 sa.
Toinen menetelmä vokoodausalgoritmin tehokkuuden lisäämiseksi on järjestää erillinen aliprosessori DSP-ytimeen, jota aliprosessoria pidetään minimointipro-35 sessorina. Minimointiprosessori suorittaa korrelaatiot, laskee keskimääräisen neliöllisen virheen (MSE) ja 7 etsii minimi MSE:tä käyttäen DSP-ytimen antamaa dataa. Minimointiprosessori jakaa laskennallisesti tehokkaat korrelaatio- ja minimointitehtävät DSP-ytimen kanssa. Minimointiprosessoriin kuuluu ohjauselementti, joka 5 valvoo minimointiprosessorin toimintaa ja joka voi supistaa MSE-minimointitehtävää tietyissä olosuhteissa. Näissä olosuhteissa jatkettu etsintä ei kykene aikaansaamaan MSErtä alle nykyisen MSE-minimin johtuen matemaattisista rajoitteista. MSE-minimointitehtävää su-10 pistäviä menetelmiä pidetään minimointiprosessorin teho säästötoimi ntoina.
Kolmas menetelmä vokoodausalgoritmin tehokkuuden lisäämiseksi esimerkkisovelluksessa on järjestää tarkoi-15 tukseen sopiva laitteisto tehokkaan lohkonormalisoin-nin suorittamiseksi. Vokoodausalgoritmin laskennassa on tarvetta ylläpitää korkein mahdollinen laskenta-tarkkuus. Järjestämällä sopiva laitteisto, lohkonorma-lisointi voidaan suorittaa samanaikaisesti muiden vo-20 koodausalgoritmin operaatioiden kanssa, jolloin vokoodausalgoritmin suorittamiseen vaadittavien jaksojen määrä pienenee.
PIIRUSTUSTEN LYHYT KUVAUS 25
Esillä olevan keksinnön muodot, tarkoitukset ja edut tulevat selvemmiksi seuraavasta yksityiskohtaisesta kuvauksesta viitaten oheisiin piirustuksiin, joissa on samat viitenumerot kauttaaltaan ja joissa: 30 kuvio 1 on lohkokaavio, joka esittää esillä olevan keksinnön mukaista laitetta; kuvio 2 on esillä olevan keksinnön toiminnan toiminnallinen esitys; 8 kuvio 3 on vuokaavio, joka esittää esimerkin esillä olevan keksinnön mukaisesta koodaustoiminnasta; kuvio 4a - d ovat kaavioita, jotka esittävät vokoode-rin bittiallokointia eri nopeuksilla ja jotka esittä-5 vät eri nopeuksilla käytettyjen aste- ja koodikirja-alikehysten määrää; kuviot 5a - d ovat lohkokaavioita esillä olevan keksinnön mukaisen esimerkkisovellutuksen DSP-ytimestä; kuviot 6a - d ovat lohkokaavioita esillä olevan kek-10 sinnön mukaisen esimerkkisovellutuksen minimointipro-sessorista; kuvio 7 esittää äänenetasoetsintätoimintoa, joka suoritetaan esillä olevan keksinnön esimerkkisovellutuk-sessa; 15 kuvio 8 on vuokaavio, joka esittää esillä olevan keksinnön esimerkkisovellutuksessa suoritettavaa ää-nenetasoetsintätoimintoa; kuvio 9 esittää koodikirjaetsintätoimintoa, joka suoritetaan esillä olevan keksinnön esimerkkisovellutuk-20 sessa; kuvio 10 on vuokaavio, joka esittää esillä olevan keksinnön esimerkkisovellutuksessa suoritettavaa koodikir jaetsintätoimintoa ; kuvio 11 on lohkokaavio kooderin dekooderista, joka 25 vastaa kooderin suodatinmuistin pitämisestä yhdessä päässä ja dekooderin toisessa päässä tietoliikenne-linkkiä samassa vokooderitoiminnassa esillä olevan keksinnön mukaisesti; ja kuvio 12 on esillä olevan keksinnön mukaisen esimerk-30 kisovellutuksen dekooderin lohkokaavio.
9
SUOSITELTUJEN SUORITUSMUOTOJEN YKSITYISKOHTAINEN KUVAUS
Viitaten nyt kuvioihin, kuvion 1 DSP-ydin, joka esite-5 tään kuvioissa 5a - d, suunnitellaan kolmiosaisen ha-jasaantimuistin (RAM) ympärille, (RAM A 104, RAM B 122 ja RAM C 182), lukumuistin (ROM), (ROM E 114) ja tehokkaan aritmeettis-loogisen yksikön (ALU) (ALU 143). Kolmiosainen hajasaantimuisti RAM mahdollistaa ALU:n 10 tehokkaamman käytön ja lisääntyneen RAM- kaistanleveyden verrattuna yksittäisellä RAM:11a saavutettavaan. Haluttu ROM, ROM E 114 aikaansaa 16-bittiset vakiot. RAM-osat RAM A 104, RAM B 122 ja RAM C 182 ja ROM, ROM E 114 antavat datan ALU:un 143. RAM 15 C 182 hyväksyy ja muodostaa 32-bittistä dataa ALU:sta ja ALU:un 143 kun taas RAM A 104 ja RAM B 122 hyväksyvät ja muodostavat 16-bittistä dataa tehden laskennan 16-bittisillä vakioilla ja tallentamisen 32-bittisillä vakioilla erittäin tehokkaaksi.
20
Kullakin osalla on haluttu osoitteenmuodostusyksikkö. RAM A:n 104 on osoiteyksikkö A 102, RAM B:n 122 on osoiteyksikkö B 120 ja RAM C:n 182 on osoiteyksikkö C 186 ja ROM E:n 114 on osoiteyksikkö E 112. Kukin osoi-25 teyksikkö käsittää rekistereitä, multipleksereitä ja lisääjiä/vähentäjiä (ei esitetty). Yhden kellojakson aikana DSP-ydin 4 voi suorittaa kolme muistioperaatiota, kolme osoitepäivitystä, aritmeettisen operaation (t.s. kerro-kerää-normalisoi) ja datan siirron norma-30 lisointiprosessorille.
Komento ROM, ROM I 194 tallettaa komennot, jotka ohjaavat DSP-ytimen 4 suoritussekvenssiä. ROM:iin I 194 talletettu komentosekvenssi kuvaa DSP-ytimellä 4 suo- 10 ritettavat prosessointitoiminnat. ROM I 194 on haluttu osoitteenmuodostusyksikkö, IP-laskin ja pino 196.
RAM-osoitteenmuodostusyksiköt tai rekisteritiedostot, 5 osoiteyksikkö A 102, osoiteyksikkö B 120, osoiteyksik-kö C 186 antavat osoitteen ja datan vastaaville RAM-operaatioille. Data voidaan siirtää rekisteritiedos-toelementistä toiseen samassa osoiteyksikössä tai vastaavaan RAM-muistiin. Esimerkkisovellutuksessa osoi-10 teyksikkö A 102 antaa datan multiplekserin 106 kautta RAM:iin A 104, osoiteyksikkö B 120 antaa datan multiplekserin 124 kautta RAM:iin B 122 ja osoiteyksikkö C 186 antaa datan multiplekserin 180 kautta RAM:iin C 182 .
15 Rekisteritiedostoelementit hyväksyvät välittömän datan, IMM (kuten esitetään kuvissa 5a -d), datan muista rekisteritiedostoelementeistä samassa osoiteyksikössä tai datan RAM-muistista. Tästä lähtien sanojen "välitön data" maininta viittaa kaikissa tapauksissa ohje-20 dekooderin 192 antamaan dataan. Esimerkkisovellutuksessa RAM A 104 antaa datan multiplekserin 100 kautta osoiteyksikköön A 102, RAM B 122 antaa datan multiplekserin 118 kautta osoiteyksikköön B 120 ja RAM C 182 antaa datan multiplekserin 184 kautta osoiteyksik-25 köön C 186. Kukin osoiteyksikkö aikaansaa automaattisen jälkilisäyksen ja jälkivähennyksen sisäisellä li-sääjällä/vähentäjällä (ei esitetty). Esimerkkisovellutuksessa osoiteyksikkö 120 B aikaansaa automaattisesti modulo-osoituksen ja kahden halutun rekisteritiedos-30 toelementin (ei esitetty) käytön osoittimina suora-muistihaulle (DMA).
Osoiteyksikkö E 112 on optimoitu kertoimien palauttamiseen. Se sisältää perusrekisterin, joka hyväksyy vä-35 littömän datan multiplekserin 110 kautta, ja siirtore- 11 kisterin, joka hyväksyy välittömän datan multiplekserin 110 kautta tai datan kerääjältä (COREG tai C1REG 166) multiplekserien 168 ja 110 kautta. Siirtorekiste-ri aikaansaa automaattisen jälkilisäyksen ja jälkivä-5 hennyksen sisäisellä lisääjällä/vähentäjällä (ei esitetty) .
IP-laskin ja pino 196 sisältää osoiteosoittimet, jotka suorittavat ROM I:n 194 muistiosoitustoiminteen.
10 Osoitteen sekvenssointia ohjataan käskydekooderilla 192. Osoitedata siirretään joko sisäisesti IP-laskimessa ja pinossa tai hyväksytään välittömänä datana .
15 Data voidaan siirtää RAM A:sta 104, RAM B:stä 122 tai RAM C:stä 122 ALUrssa 143 oleviin rekistereihin. Dataa voidaan myös siirtää akusta (COREG 164 tai C1REG 166) RAM A:hän 104, RAM B:hen 122 tai RAM C:hen 182. Dataa voidaan siirtää OREG:stä 162 RAM C:hen 182.
20 RAM A hyväksyy dataa osoiteyksiköltä A 102 multiplekserin 106 kautta. RAM A 104 myös hyväksyy datan kerääjältä (COREG tai C1REG 166) multiplekserien 168 ja 110 kautta. RAM B 122 hyväksyy datan osoiteyksiköltä B 120 25 multiplekserin 124 kautta. RAM B 122 myös hyväksyy datan kerääjältä (COREG tai C1REG 166) multiplekserien 168 ja 110 kautta. RAM B myös hyväksyy datan DMA_INPUT:sta (kuten esitetään kuvioissa 5a - d) tai INREG:stä 128 multiplekserin 124 kautta. RAM C 182 hy-30 väksyy datan osoiteyksiköltä C 186 multiplekserin 180 kautta. RAM C 182 myös hyväksyy datan kerääjältä (COREG tai C1REG 166) multiplekserien 168 ja 180 kautta. RAM A 104 antaa datan osoiteyksikköön A 102 multiplekserin 100 kautta ja AREGiin 103 multiplekserin 108 35 kautta. RAM B 122 antaa datan osoiteyksikköön B 120 12 multiplekserin 118 kautta, RAMB_OUT:iin (kuten esitetään kuvissa 5a - d), SREG:iin 136 multiplekserin 126 kautta, BREG:iin 134 multiplekserin 116 kautta ja DREG:iin 156 multiplekserin 158 kautta.
5 AREG 130 hyväksyy välittömän datan, datan ROM E:stä 114 tai datan RAM A:sta 104 multiplekserin 108 kautta. BREG 134 hyväksyy välittömän datan, datan muistista ROM E 114 tai datan muistista RAM B 122 multiplekserin 10 116 kautta. Lisäksi BREG 134 hyväksyy datan kerääjältä (COREG 164 tai C1REG 166) multiplekserien 168 ja 116 kautta.
COREG 164 tai C1REG 166 hyväksyvät datan multiplekse-15 rin 148 kautta RAM C 182, summaimelta 146, loogiselta JA-elementiltä 144 tai loogiselta TAI-elementiltä 142.
Siirtoindeksirekisteri SREG 136 hyväksyy välittömän datan tai datan muistista RAM B 122 multiplekserin 126 20 kautta.
ALU 143 suorittaa kerto-, lisäys-, kerto-keräys-, ker-to-lisäys-, kerto-vähennys-, pyöristys-, lisäys-, negaatio-, ja loogiset JA-, TAI-, tai KÄÄNNÄ-operaatiot. 25 Tulot kertojaan 132, AREG:iin 130 ja BREG:iin 134 por-titetaan (portitusta ei esitetty), mikä vähentää tehonkulutusta kertojassa 132 varmistamalla, että tulot vaihtuvat vain kun kertolasku on suoritettu. ALU 143 aikaansaa kaksi 36-bittistä kerääjää (COREG 164 tai 30 C1REG 166) tehokkuutta varten ja kaksi ryhmäsiirrintä, ryhmäsiirrin 140 ja ryhmäsiirrin 150, normalisoinnille. Siirrot aina 18-bitin asemiin vasemmalla tai oikealla annetaan ryhmäsiirtimelle 140 ja ryhmäsiirtimelle 150. Siirtoindeksi spesifioidaan joko nimenomaan vä- 13
littömän datan kautta tai tarkoitukseen sopivalla siirtoindeksirekisterillä SREG 136 multiplekserin 149 kautta. Siirtoindeksirekisteri SREG 136 yhdessä ryhmä-siirrinten 140 ja 150 kanssa, bittikäänteinen looginen 5 TAI-elementti 160 ja OREG 162 järjestetään ylimenevän minimoimiseksi lohkonormalisoinnin suorituksessa. ALU 143 antaa tilan ohjedekooderille 192 mahdollistaen ehdolliset siirtymät perustuen COREGrn 164 ja/tai ClREG:n 166 aritmeettiseen tai loogiseen tilaan. Esi-10 merkiksi esimerkkisovellutuksessa COREG 164 ja C1REG
arvojen merkkejä verrataan ehdollisen hypyn aikaansaamiseksi merkin muutokselle. Hyppy syntyy, kun välitön data annetaan IP-laskimeen ja pinoon 196. Kerääjän ylivuoto ja alivuoto tunnistetaan ja saturaatio suori-15 tetaan automaattisesti antamalla heksadesimaaliarvo 0x7FFFFFFF ylivuototapauksessa ja 0x80000001 alivuoto-tapauksessa kahden komplementti aritmetiikan mukaisesti .
20 Ohjesekvenssi on hae, dekoodaa, suorita. Osoitearvo annetaan IP-laskimella ja pinolla 196 ROM I:n 194 käskemiseksi, joka vastauksena antaa ohjeet ohjedekoode-rille 192. Ohjedekooderi 192 vastauksena näihin tulo-ohjeisiin dekoodaa ohjeen ja antaa ohjaussignaalin so-25 piville elementeille DSP-ytimessä 4 ohjeen suorittamiseksi .
Sopiva silmukkalaskin ja pino 190 yhdessä IP-laskimen ja pinon 196 kanssa antavat pienen ylimenevän sisäk-30 käiset alirutiinikutsut ja sisäkkäiset silmukat. Ohjeen haku estetään yksittäisen ohjesilmukan ajaksi, mikä vähentää tehonkulutusta. Silmukkalaskin ja pino 190 hyväksyy välittömän datan multiplekserin 188 kautta kiinteämittaisten silmukoiden suorittamiseksi. Li-35 säksi silmukkalaskin ja pino 190 hyväksyy datan kerää- 14 jäitä (COREG 164 C1REG 166) multiplekserien 168 ja 188 kautta vaihtuvamittaisten silmukoiden suorittamiseksi. 256-sanainen pysyvä ohjevälimuisti (ei esitetty) ROM I:ssä 194 aikaansaa pienitehoisen ohjehaun useimmin 5 suoritetuille silmukoille ja alirutiineille. ODOTA-ohje estää ohjehaun ja ohjekoodauksen tapahtuman kestäessä, mikä vähentää tehonkulutusta. Esimerkkeihin sellaisista tapahtumista voi kuulua DMA-siirto, ajoi-tuspoiminta PCM-rajapinnasta 2 tai ulkoinen tapahtuma.
10
Ulkoinen data ja ohjaus annetaan DSP-ytimeen 4 PORT_INPUT:n kautta (kuten esitetään kuvioissa 5a -d), DMA__INPUT: iin PCM-rajapinnasta 2 ja pysyvät testi-bitit, joita käytetään ehdollisissa hyppyohjeissa. Da-15 ta annetaan ulkoisesti DSP-ytimellä 4 CREGin (kuten esitetään kuvioissa 5a - d ja 6a - b) ja RAMB_OUT:n kautta. DMA DSP-ytimen 4 ja PCM-rajapinnan 2 välillä suoritetaan tunnetulla jakso-otolla. Data COREGistä 164 tai CIREGistä 166 annetaan multiplekserin 168 20 kautta yhdessä OUTREG_EN:n kanssa CREGin (kuten esitetään kuvioissa 5a - d ja 6a - b) signaalin ohjedekoo-derilta kanssa. Aktiivinen OUTREG_EN-signaali merkitsee voimassaolevan minimointiprosessorille annetun CREG-datan läsnäoloa.
25
Minimointiprosessori 6, joka esitetään kuvioissa 6a -b, auttaa äänentaso- ja koodikirjaetsinnän laskennallisesti raskaissa osissa. Suorittaakseen minimointi-proseduurin, minimointiprosessori 6 vastaanottaa sek-30 venssin havainnollisesti painotettuja tulopuheen näytteitä, joukon vahvistusarvoja ja joukon syntetisoituja puhenäytesekvenssejä DSP-ytimeltä 4. Minimointiprosessori 6 laskee syntetisoidun puheen autokorrelaation ja ristikorrelaation syntetisoidun puheen ja havainnolli-35 sesti painotettujen tulopuheen näytteiden välillä.
15 Näistä korrelaatioista määritetään neliöllinen keskivirhe (MSE) syntetisoidun puheen ja tulopuheen välillä syntetisoidun puheen vahvistuksen ja indeksin funktiona. Minimointiprosessori 6 raportoi indeksin ja vah-5 vistuksen, mikä johtaa MSE:n minimiin. Tehonsäästöomi-naisuudet keskeyttävät MSE-laskennat, kun lisä-minimointi ei ole mahdollista. Minimointiprosessori 6 kommunikoi DSP-ytimen kanssa CREGtin kautta, portti l/0:n, ja sopivat DSP-ytimen ohjeet.
10
Minimointiprosessorin 6 toiminta määritetään ohjauksella 220. Ohjaus 220 käsittää laskimen indeksiarvojen seuraamiseksi, rekisterit optimaalisen äänentaso- tai koodikirjaetsintätuloksen pitämiseksi, osoitteenmuo-15 dostuspiirin RAM X 212 osoittamiseksi ja tulo- /lähtöpiiristön. Lisäksi ohjauselementti 220 on vastuussa valintasignaalien ohjauksesta multipleksereillä 224, 234, 230 ja 246 ja kytkee rekisterit 210, 214, 226, 228, 236, 238, 244 ja 250. Ohjaus 220 myös seuraa 20 eri arvoja minimointiprosessorin 6 elementeissä, ohjaa tehonsäästötoimintoja, jotka kaventavat hakuja tiettyjen ennalta määrättyjen hakukeskeytysolosuhteiden alaisena ja ohjaa vahvistusarvojen kierrätystä kierrä-tyspuskurissa 259.
25
Edelleen ohjaus 220 on vastuussa tulo-/lähtötoiminteiden suorittamisesta. Ohjaus 220 on vastuussa minimointitulosten antamisesta DSP-ytimelle (t.s. paras äänentasoviive ja äänentasovaihtelu tai 30 paras koodikirjaindeksi ja koodikirjavahvistus määritettynä vastaavissa hauissa) tuloporttien 12 kautta. OUTREG_EN-signaali annetaan ohjauselementtiin 220 rekisterille 210 annetavan datan voimassaolon ja läsnäolon kerääjäsignaalissa CREG:ssä osoittamiseksi. Ohja- 16 us 220 vastauksena generoi kytkentäsignaalin ja antaa sen rekisteriin 210 datan vastaanottamiseksi.
OUTPORT_EN (kuten esitetään kuvioissa 5a - d ja 6a -5 b) ja PORT_ADD (kuten esitetään kuvioissa 5a - d ja 6a - b) signaalit annetaan ohjauselementtiin DSP-ytimeltä 4. PORT_ADD-signaali antaa osoitteen minimointiproses-sorille 6. Minimointiprosessori 6 hyväksyy datan CREG:ltä kun PORT_ADD spesifioi datan minimointipro-10 sessorille 6 ja OUTPORT_EN osoittaa voimassaolevan PORT_ADD arvon. Ohjaus ja data annetaan minimointipro-sessorille 6, kuten yllä kuvataan.
Viitataan kuvioon 1, joka on esimerkkilohkodiagrammi 15 esillä olevan keksinnön mukaisesta arkkitehtuurista. PCM-rajapinta 2 vastaanottaa ja antaa koodekkiin (ei esitetty) pulssikoodimoduloidun (PCM) puhenäytedatan, jotka esimerkkisovelluksessa ovat μ-laki tai A-laki kompandoitua näytedataa tai lineaarista näytedataa.
20 PCM-rajapinta 2 vastaanottaa ajoitustiedon kello- generaattorilta 10 ja vastaanottaa data- ja ohjaustiedon mikroprosessorirajapinnalta 8.
PCM-rajapinta 2 antaa DSP-ytimeen 4 PCM-25 puhenäytedatan, jonka se vastaanotti koodekilta (ei esitetty) koodattavaksi. PCM-rajapinta 2 vastaanottaa DSP-ytimeltä 4 puhenäytedatan, joka annetaan koodekil-le (ei esitetty). PCM-data siirretään DSP-ytimen 4 ja PCM-rajapinnan välillä DMA:n kautta. PCM-rajapinta 2 30 antaa ajoitustiedon kellogeneraattorille perustuen koodekilta (ei esitetty) vastaanotettujen näytteiden ajoitukseen.
17 DSP-ydin 4 antaa datan ja ohjaustiedon yhteisprosesso-rilleen, minimointiprosessorille 6. Lisäksi DSP-ydin 4 antaa datan lähtöporttiin 14 ja vastaanottaa datan tu- loporteista 12. DSP-ydin 4 vastaanottaa ajoitustiedon 5 kellogeneraattorilta 10. Lisäksi DSP-ydin 4 kykenee antamaan ulkoista osoitetietoa ja vastaanottamaan ulkoisia ohjeita ja dataa.
Minimointiprosessori 6 vastaanottaa ajoitustiedon kello logeneraattorilta ja vastaanottaa datan ja ohjauksen DSP-ytimeltä 4. Minimointiprosessori 6 antaa minimoin-tiproseduurien tulokset DSP-ytimeen 4 tuloporttien 12 kautta.
15 Kellogeneraattori 10 antaa ajoitustiedon kaikkiin muihin lohkoihin. Kellogeneraattori 10 vastaanottaa ulkoiset kellosignaalit ja vastaanottaa ajoitustiedon mikroprosessorirajapinnasta 8 ja PCM-rajapinnasta 2.
20 Ryhmätestitoimintaryhmä (JTAG) -rajapinta 16 antaa mahdollisuuden testata ASIC:in toiminta. JTAG-rajapinta 16 vastaanottaa ulkoisen datan ja ohjaustiedon ja antaa ulkoista dataa.
25 Lähtöportit 14 vastaanottavat dataa DSP-ytimeltä 4 ja antavat tämän datan mikroprosessori rajapintaan 8 ja voivat myös antaa datan ulkoisiin laitteisiin (ei esitetty) .
30 Tuloportit 12 vastaanottavat dataa mikroprosessori rajapinnasta 8 ja minimointiprosessorilta 6 ja antavat tämän datan DSP-ytimeen 4. Tuloportit 12 voivat myös 18 vastaanottaa dataa ulkoisilta laitteilta (ei esitetty) ja antaa tämän datan mikroprosessorinajapintaan 8.
Mikroprosessorinajapinta 8 vastaanottaa ja antaa mik-5 roprosessoriin (ei esitetty) dataa ja ohjaustietoa. Tämä tieto annetaan muille lohkoille.
Esillä olevan keksinnön esimerkkisovellutuksessa vo-kooderi-ASIC suorittaa vaihtuvanopeuksisen CELP-10 algoritmin, joka esitetään yksityiskohtaisesti samaan aikaan vireillä olevassa US-patenttihakemuksessa sar-janro 08/004,484, jätetty tammikuun 14. 1993, nimeltään "Variable Rate Vocoder" ja siirretty esillä olevan keksinnön haltijalle.
15
Kuvio 2 esittää ASICrissa suoritetut päätoiminteet. Viitaten kuvioon 2, koodattavat näytteet annetaan vo-kooderi-ASICiin PCM- rajapinnan 30 kautta koodekilta (ei esitetty). Seuraavaksi näytteet annetaan dekompan-20 doivaan elementtiin 32, joka muuntaa μ-laki- tai A- laki-näytteet lineaarisiksi näytteiksi. Lineaarisessa muodossa annetut näytteet annetaan edelleen dekompan-doivan elementin 32 kautta muuttumattomina. Lineaariset näytteet annetaan lähetysäänen prosessointiele-25 menttiin 34, joka sisältää toiminnallisesti äänikäyt-töisen kytkimen (VOX) 36, äänitasauselementin 38, QCELP-koodauselementin 40 ja äänitaajuus(DTMF)-tunnistuselementin 41. Lähetysäänen prosessointiele-mentti 34 antaa koodatut puhepaketit mikroprosessori-30 rajapinnan 42 kautta mikroprosessoriin (ei esitetty), joka on ulkoinen ASICriin.
Koodatut puhepaketit annetaan mikroprosessorilta (ei esitetty) mikroprosessorirajapinnan 42 kautta vastaan- 19 ottavaan äänikäsittelyelementtiin 44, jossa ne dekoodataan puhenäytteiksi. Vastaanottava äänikäsittelyele-mentti 44 käsittää toiminnallisesti, QCELP-koodauselementin 46, äänitasaimen 48 ja DTMF-5 generointielementin 47. Dekoodatut näytteet annetaan kompandoivaan elementtiin 50, joka muuntaa lineaariset näytteet μ-laki- tai A-laki-muotoon tai antaa lineaariset näytteet muuttumattomina PCM-rajapintaan 30.
ASIC antaa dekoodatut puhenäytteet PCM-rajapinnan 10 kautta koodekkiin (ei esitetty), joka on ulkoinen ASIC:iin.
Dekompandointioperaatio, joka esitetään kuviossa 2 de-kompandoivana elementtinä 32 ja kompandointioperaatio, 15 joka esitetään kuviossa 2 kompandoivana elementtinä 50 suoritetaan DSP-ytimellä 4, mikä esitetään kuvioissa 5a - d. Lähetysäänen prosessointioperaatiot, jotka esitetään kuviossa 2 lähetysäänen prosessointielement-tinä 34 suoritetaan DSP-ytimellä 4 ja minimointipro-20 sessorilla 6, mikä esitetään kuvioissa 6a - b. Äänen vastaanotto-operaatiot, jotka esitetään kuviossa 2 äänen vastaanottoelementtinä 44, suoritetaan DSP-ytimellä 4, mikä esitetään kuvioissa 5a - d.
25 Esimerkkisovelluksessa koodekilta (ei esitetty) annetut näytteet 8-bittisessä μ-laki- tai 8-bittisessä A-laki-muodossa muunnetaan 14-bittiseen lineaariseen muotoon, μ-lain ja lineaarisen välinen yhteys esitetään yhtälössä 1 alla: 30 2Y = -Is(33 + 2M)2n -33 (1) missä Y on lineaarinen arvo (-4015.5 - 4015.5), N on eksponentti (0 - 7), M on voimakkuus (0 - 15) ja S on 20 merkki (0 positiiviselle; 1 negatiiviselle). A-lain ja lineaarisen välinen yhteys esitetään yhtälöillä 2 ja 3 alla: 5 2Y = -1s(1 + 2M)22Y N=0: lie (2) 2Y = -ls(33 + 2M)2n n=1, . . 7: lie (3) missä Y on lineaarinen arvo (-4032 - 4032), N, M, S kuten yllä.
10
Viitaten kuvioihin 5a - d, kuvion 2 PCM-rajapinnan 30 kautta annetut näytteet muunnetaan lineaariseen muotoon etsintätaulukkovälineillä, jotka on tallennettu ROM E:hen 114. Edullisessa sovellutuksessa puolenko-15 koisia 128x14 μ-laki-lineaari- ja A-laki- lineaarietsintätaulukkoja käytetään muunnoksen suorittamiseen. Edullisessa sovelluksessa hyödynnetään täys-kokoisia muunnostaulukoita, joilla on yhtälössä 4 esitetyt ominaisuudet.
20 ROM(n + m) = -ROM(n), 0<n<127 (4)
Kaikkien DC-komponenttien poistaminen tulopuhesignaa-lista vaaditaan ennen autokorrelaatiokertoimien ja 25 LPC-kertoimien laskentaa. DC:n poisto-operaatio tehdään DSP-ytimessä 4 vähentämällä alipäästösuodatettu puhenäytekeskiarvo, DC-ennakko, kustakin tulonäyttees-tä ikkunassa. Näin ollen DC-ennakko nykyiselle kehykselle on painotettu keskiarvo nykyisen ja edellisen 30 kehyksen näytekeskiarvosta. DC-ennakon laskenta esitetään yhtälöllä 5 alla: 21 DC __ ennakko = a (keskimääräinen (aikaisempi _ kehys)) ^ + (1 - a)keskimääräinen(nykyinen _ kehys) missä a=0.75 esimerkkisovellutuksessa. Alipäästösuoda-tusta käytetään suurten epäjatkuvuuskohtien estämisek-5 si kehysten rajoilla. Tämä operaatio suoritetaan DSP-ytimessä 4 tallettamalla näytekeskiarvo nykyiselle kehykselle ja aikaisemmalle kehykselle yhdessä RAM-elementeistä (t.s. RAM A 104, RAM B 122 tai RAM C 182) ROM E 114 saadun interpolointitekijän kanssa. Lisäys 10 suoritetaan summaimella 146 ja kertolasku kertojalla 132. DC:n estofunktio voidaan kytkeä tai estää mikroprosessorin ohjauksessa.
DC-vapaa tulopuhesignaali, s(n), ikkunoidaan puhese-15 kvenssien katkomisen kiinteiksi kehyksiksi vaikutusten pienentämiseksi. Esimerkkisovellutuksessa käytetään Hamming-ikkunointifunktiota. Kehyspituudella LÄ = 160 ikkunoitu puhe sw(n) lasketaan alla yhtälöllä 6 esitetyn mukaisesti: 20 sw(n) = s(n + 60)WH(n), 0<n<LA-l (6) missä Hamming-ikkuna määritetään yhtälöillä 7 ja 8 alla .
25 WH(n) = 0.54-0.46cos[2^n/ (LA -1)], 0<n<LA-l (7) = 0, muutoin (8)
Edullisessa sovelluksessa, koska WH(n) on parillissym-30 metrinen funktio, 80 kertoimen tarkastustaulu, puolet Hamming-ikkunan kertoimista, talletetaan ROM E:hen 22 114. Seuraavaksi voidaan suorittaa ikkunointi antamalla ikkunakerroin WH(n) ROM E:stä 114, osoiteyksikön E 112 antaman osoitearvon mukaisesti multiplekserin 108 kautta AREG:iin 130. AREG 130 antaa tämän datan kerto-5 jän 132 ensimmäiseen tuloon. Puhenäyte s(n+60) annetaan RAM B:llä 112 BREGtiin 134. BREG 134 antaa tämän datan kertojan 132 toiseen tuloon. Kertojan 132 lähtönä on ikkunoitu puhenäyte, joka annetaan C0REG:iin 164 ja sitten RAM C:hen 182 multiplekserin 168 kautta.
10
Lohkonormalisointiproseduuri sisältää kaksi toiminnallista osaa: normalisointikertoimen määrittäminen ja aiotun datan normalisointi. Esimerkkisovellutuksessa data talletetaan kahden komplementtinotaatiolla. Ik-15 kunoidut näytteet lasketaan ylläolevan yhtälön 7 mukaan. Normalisointiohjeella DETNORM ROM I:stä 194 saatava ikkunoitu C0REG:ssä 164 muodostettu näytearvo alistetaan seuraavalle proseduurille. Jos arvo C0REG:ssä 164 on negatiivinen, niin inversioelementti 20 152 invertoi numeron binäärinumerot ja antaa inver toidun arvon summaimen 146 ensimmäiseen tuloon. Sum-maimen 146 toiseen tuloon annetaan nolla multiplekse-rien 137 ja 138 kautta. Seuraavaksi summain 146 lisää ykkösen, sen kantotulon kautta (ei esitetty) bitti-25 invertoituun arvoon. Jos arvo C0REG:ssä 164 on positiivinen, arvo annetaan multiplekserien 168 ja 154 kautta inversioelementtiin 152 ja summaimeen 146 koskemattomana. Tämän proseduurin tarkoituksena on laskea C0REG:in itseisarvo. Itseisarvo sitten annetaan bitit-30 täin loogisen TAI-elementin 160 ensimmäiseen tuloon.
Bitittäin loogisen TAI-elementin 160 toinen tulo annetaan OREGrllä 162. Yllä kuvattu itseisarvon laskenta esitetään alla yhtälöissä 8a -c.
35 OREGuusi = (ABS(C0REG))TAI (OREGvanha) (8a) 23 missä ABS (COREG) = CO REG, CO REG >0 (8b) = -COREG, COREG <0 (8c) 5 Yllä yhtälöillä 8a - c kuvattu operaatio voidaan vastaavasti suorittaa ClREGrllä 166 käyttäen DETNORM-ohjetta, jos normalisoitavaksi aiottu data on ClREG:ssä 166. OREG 162 tyhjennetään normalisointiope-raation alussa. Tämä proseduuri toistetaan kaikille 10 ikkunoiduille näytteille (aiottu data) niin, että operaation lopussa OREG:iin 162 talletettava arvo edustaa kaikkien ikkunoitujen itseisarvojen bitittäin loogista TAI:ta. Eniten merkitsevien bittien joukosta OREG:ssä 162 määritetään skaalauskerroin, koska arvo OREG:ssä 15 162 on suurempi tai yhtäsuuri kuin suurin arvo ik kunoitujen näytteiden lohkossa. OREG:ssä 162 oleva arvo siirretään multiplekserin 168 kautta RAM C:hen 182. Seuraavaksi arvo ladataan COREG:iin 164. Normalisoin-tikerroin määritetään laskemalla C0REG:n 164 arvon va-20 semmalle tai oikealle siirtojen määrä, joka vaaditaan, että ikkunoidun datan siirto tällä määrällä aikaansaa arvot, joilla on haluttu huippuarvo seuraavaa operaatiota varten. Tätä skaalauskerrointa pidetään myös normalisointikertoimena. Koska normalisointi suorite-25 taan siirtojen kautta, normalisointikerroin on kahden potenssi.
Ikkunoitujen näytteiden tarkkuuden pitämiseksi korkeimmalla mahdollisella tasolla, aiotut arvot kerro-30 taan normalisointikertoimella niin, että suurin arvo varaa maksimimäärän bittejä, joka on järjestetty seuraavaa operaatiota varten. Koska normalisointikerroin on kahden potenssi, aiotun datan normalisointi voidaan saavuttaa yksinkertaisesti suorittamalla joukko siir-35 toja normalisointikertoimen määrityksen mukaisesti.
24
Normalisointikerroin annetaan RAM B:llä 122 multiplekserin 126 kautta SREG:iin 136. Ikkunoidut näytteet annetaan sitten RAM C:stä 182 multiplekserin 158 kautta DREG:iin 156. Tämän jälkeen DREG 156 antaa nämä arvot 5 ryhmäsiirtimelle 150 multiplekserin 154 kautta ja estää invertterin 152, jossa ne siirretään ryhmäsiirti-meen 150 SREG:llä multiplekserin 149 kautta annetun normalisointikertoimen mukaisesti. Ryhmäsiirtimen 150 lähtö annetaan estetyn lisäyselementin 146 ja multi-10 plekserin 148 kautta C0REG:iin 164. Normalisoidut ikkunoidut näytteet siirretään sitten multiplekserin 168 kautta ja annetaan multiplekserien 124 ja 180 kautta RAM B:hen 122 ja RAM C:hen 182, vastaavasti. Tämä johtaa kahteen kopioon normalisoiduista näytteistä 15 RAM:s s a, tehden seuraavan autokorrelaatiokerrointen laskennan tehokkaammaksi.
P+l autokorrelaatiokerrointen R(k) laskenta suoritetaan allaolevan yhtälön 9 mukaan.
20 LA-l-k R(k) = 'Yjsw(m)sw(m + k), 0 <k<P (9) m=0 missä P formanttiennakointisuodattimen aste kooderis-sa. Esimerkkisovellutuksessa P = 10. Normalisoidut ik-25 kunoidut näytteet sw(m) annetaan RAM B:llä 122 multiplekserin 116 ja BREG:in kautta kertojan 132 ensimmäiseen tuloon. Normalisoitujen ikkunoitujen näytteiden viivästetyt versiot sw(m+k) annetaan RAM C:llä 182 multiplekserin 148 ja CIREGrn 166, RAM A:n 104, ja 30 AREG:n 130 kautta kertojan 132 toiseen tuloon. Kukin R(k) on LÄ - k arvoista kerätty. Kunkin R(k) ensimmäistä iteraatiota varten kertojan 132 lähtö annetaan kerääjään C0REG 164 multiplekserin 138 ja ryhmäsiirtimen 140 kautta ja summaimen 146 ensimmäiseen tuloon.
25
Multiplekseri 154 antaa nollan summaimen 146 toiseen tuloon estetyn ryhmäsiirtimen 150 kautta. Seuraaville iteraatioille, kertojan 132 lähtö annetaan summaimen 146 ensimmäiseen tuloon multiplekserin 138 ja ryhmä-5 siirtimen 140 kautta. Summaimen 146 toiseen tuloon annetaan C0REG:n 164 lähtö multiplekserien 168 ja 154, estetyn inversioelementin ja estetyn ryhmäsiirtimen 150 kautta. Tämä proseduuri toistetaan kullekin R(k):lie.
10
Mikään autokorrelaatiokertoimista ei ole suurempi kuin R(0). Esimerkkisovellutuksessa R(0):n laskennan jälkeen määritetään normalisointikerroin. Seuraavaksi tämä normalisointikerroin annetaan jo lasketulle 15 R(0):lle ja muille autokorrelaatiokertoimille kun ne on laskettu. Autokorrelaatiokertoimien normalisointi tässä vaiheessa maksimoi tarkkuuden LPC-kertoimien seuraavalle laskennalle.
20 Edeten nyt lohkoon 62 kuvassa 3, LPC-kertoimet lasketaan lyhytaikaisen korrelaation (redundanssien) poistamiseksi puhenäytteistä.
Formanttiennakointisuodattimella, jonka aste on P, on 25 siirtofunktio A(z), joka esitetään allaolevalla yhtälöllä 10.
p A(z) = p = 1° U°) i=1 30 Kukin LPC-kerroin ai lasketaan normalisoidun ikkunoidun tulopuheen autokorrelaatioarvoista. Tehokasta iteratiivistä menetelmää, Durbinin rekursiota (katso Rabiner, L.R. ja Schafer, R.W., "Digital Processing of 26
Speech Signals", Prentice-Hall, 1978) käytetään esi-merkkisovellutuksessa LPC-kertoimien laskennassa. Tämä iteratiivinen menetelmä kuvataan yhtälöissä 11-17 alla.
5
Ei0)=R( 0), i = 1 (11) K RiD-J^a/^Rd-j) /(12)
j-ι V
af=k, (13) af = - kflfjf, 1 < j < i -1 (14) 10 E1 =(l-k?)Eii~i) (15)
Jos i<P, niin kasvata i:tä ja jatka 12:een (16) lopulliset LPC-kerroinarvot ovat : a) =af\ 1< j < P (17) 15 Durbinin iteratiivinen algoritmi toimii ainoastaan kun tulosignaalilla on nollakeskiarvo, mikä vaatii, että DC-ennakko poistetaan ennen autokorrelaatiolaskennan suorittamista yllä kuvatulla tavalla.
20 Esimerkkisovellutuksessa 15 Hz:n kaistaleveyden laajennusta käytetään formanttiennustesuodattimen stabii-lisuuden varmistamiseksi. Tämä voidaan tehdä skaalaa-malla formanttisyntetisointisuodattimen navat asteittain sisäänpäin. Kaistanleveyden laajennus saavutetaan 25 skaalaamalla LPC-kertoimet allaolevan yhtälön 18 mukaan : <i<P (18) 27 missä β= 0.9883 esimerkkisovellutuksessa. 10 kaistan-laajennuskerrointa β1, 1 < i < P talletetaan tarkastus-taulukkoon, joka on annettu ROM E:ssä 114. Lohkon 62 funktiot suoritetaan DSP-ytimessä 4.
5
Nyt edetään lohkoon 64 kuvassa 3, koodausnopeus nykyiselle puhenäytekehykselle määritetään. Nopeuspäätös perustuu puheaktiivisuuden mittaukseen kussakin kehyksessä. Puheaktiivisuus vuorostaan mitataan kehysener-10 gian mukaan, R(0), mikä esitettiin aiemmin. Koodausno-peuden määrittämiseksi kehykselle i, kehysenergiaa verrataan kolmeen kynnykseen, jotka määritetään alla-olevilla yhtälöillä 19 - 21: 15 Τγ{Β{) = -(5.544613· 10_6)β;2 + (4.047152)β; + 362 (19) T2(B,) = -(1.529733· 10"6) Sf + (8.750045) Bt + 1136 (20) Τ^(Βγ) = -(3.957050· 10"6)Sf + (18.899622)Bt + 3347 (21) missä taustakohinataso Bi kehykselle i päivitetään 20 kussakin kehyksessä, kuten kuvataan alla yhtälöllä 22.
B, = minf/^O),160000, max[l.00547S!_1,Si_1 + l]] (22)
Nopeus on kahdeksasosa, jos kehysenergia on alle kaik-25 kien kolmen kynnyksen, neljännes, jos kehysenergia on Ti(Bi):n ja T2(Bi):n välissä ja puolet, jos kehysenergia on T2(Bi):n ja T3(Bi):n välissä, ja täysi, jos energia on T3(Bi):n yläpuolella. Paitsi kun nopeus määrätään mikroprosessorilla (ei esitetty) mikroprosesso-30 rirajapinnan 8 kautta tiettyyn nopeuteen, datanopeus voidaan nostaa mihin tahansa nopeuteen, mutta voidaan laskea vain yksi askel kehystä kohden (t.s. puolesta nopeudesta neljäosanopeuteen). DSP-ytimessä 4 näihin kynnyksiin liittyvät kertoimet annetaan etsintätaulu- kossa ROM E:ssä 114.
28
Murtonopeusalgoritmi annetaan myös edullisessa sovel-5 luksessa, mikä mahdollistaa maksimaalisen keskinopeuden rajoittamisen mikroprosessorilla (ei esitetty) mikroprosessorirajapinnan 8 kautta. Annetulla nopeuden rajoituskertoimella S vokooderin maksimaalinen keskinopeus rajoitetaan (2S + 1)/ [2(S + l)] :een rajoittamalla 10 peräkkäisten täyden nopeuden kehysten määrää. Lohkon 64 toiminnat suoritetaan DSP-ytimessä 4.
Edeten nyt kuvion 3 lohkoon 66, kaistaa laajentavat LPC-kertoimet muunnetaan viivaspektripa-15 ri(LSP)taajuuksiksi (katso Soong ja Juang "Line Spectrum Pair (LSP) and Speech Data Compression", ICASSP, 1984). LSP-taajuudet on esitetty merkittävästi parantavan lähetys- ja tallennusominaisuuksia ja voidaan koodata tehokkaammin kuin LPC-kertoimet. LSP-20 taajuudet, jotka edustavat kymmentä LPC-kerrointa ovat yhtälöissä 23 ja 24 esitettyjen polynomien kymmenen juurta.
F { (O) = cos5(2#&>)+p\ cos4(2ποί)+.. .p\ cos(2#&>)+0.5p'5 (23) 25 Q{(0)=cos5{27tCO)+q]cosA{27m)+...+q\cos(27im)+Q5p<l (24) missä p'i ja q'i välillä 1 < i < 5 lasketaan DSP-ytimessä 4 allaolevien yhtälöiden 25 - 27 mukaan: 30 p'0 = q0 = 1 (25) pi=-ai-au-i-^Vi l<i< 5 (26) q\ = -a+ an_t + q\_Y \<i<5 (27) 29 P'(Cö):n juuret saadaan olettamalla, että siinä on ainakin yksi juuri kunkin π/32 radiaanin välein. P'(Cö) arvioidaan jokaisella π/32 radiaanilla 0:sta π radiaa-5 niin. Juuren saaminen π/32 radiaanin välein johtaa funktion Ρ'(ω) merkin vaihtumiseen väliajoin.
Jos juuri saadaan, binäärihaku suoritetaan juuren eristämiseksi alueelle, jonka koko on π/256. Binääri-10 haku sisältää Ρ'(ω):η laskennan kyseisen alueen keskellä juuren sisältävän puolikkaan selvittämiseksi. Seuraavaksi aluetta kavennetaan ainoastaan siihen puolikkaaseen, joka sisältää juuren. Tämä prosessi jatkuu kunnes juuri on eristetty alueelle, jonka koko on 15 π/256. Lineaarinen interpolointi suoritetaan seuraa vaksi juuren paikan selvittämiseksi alueella kooltaan π/256 radiaania.
LSP-taajuuksien järjestysominaisuus varmistaa, että 20 Q'((ö):n yksi juuri sijaitsee kunkin P'((ö):n juuriparin välissä. Q'(ö)):n viides juuri on P'((ö):n viidennen juuren ja π radiaanin välissä. Binäärihaku, joka kuvattiin yllä, suoritetaan P'((ö):n kunkin juuriparin välissä ja P'((D):n viidennen juuren ja π radiaanin vä-25 Iissä Q'((ö):n juurten määrittämiseksi.
Koska binäärihaku jatkuu ja juuren paikka on eristetty π/256:η radiaanin kokoisen alueen sisälle, vaaditaan tasavälein sijoitetut 256 kosiniarvoa 0:n ja π:η vä-30 lille. Kosiniarvot talletetaan etsintätaulukkoon ROM
E:ssä 114. P'((ö):n ja Q'((ö): juurien löytämiseksi vaaditaan funktioiden 48 ja 30 maksimiarvojen määritys. Nämä funktioarvioinnit ovat laskennallisesti vaativin 30 osa muunnettaessa LPC-vakiot LSP-taajuuksille. Lohkon 66 funktiot suoritetaan DSP-ytimessä 4.
Edeten nyt lohkoon 68 kuviossa 3, LSP-taajuudet kvan-5 tisoidaan. Kukin LSP-taajuus keskeistetään siihen liittyvän ennakkoarvon ympärille. Ennen kvantisointia tämä ennakko vähennetään kustakin siihen liittyvästä LSP-taajuudesta kvantisointia varten vaadittavien bittien määrän vähentämiseksi. Tämä ennakko lasketaan ku-10 ten on esitetty yhtälössä 28 alla.
Ennakko = 0.5/ /(P +1) = (0.45)/ (28)
Kun ennakko on vähennetty LSP-taajuudesta, LSP-taajuus 15 kvantisoidaan käyttäen differentiaalista pulssikoodi-modulaatiokvantisoijaa (DPCM). DPCM-kvantisoijaa käytetään, koska LSP-taajuudet vaihtuvat hitaasti ajan suhteen, ja muutoksen kvantisointi LSP-taajuuksissa vähentää kvantisointiin vaadittavien bittien määrää 20 verrattuna määrään, joka vaaditaan LSP-taajuuksien suoraan kvantisointiin. DSP-ytimessä 4 LSP-taajuuden ennakkoarvot talletetaan etsintätaulukkoon ROM E:ssä 114. Käytettyjen kvantisointibittien määrä ja kvantisoint iaskeleen koko ovat funktioita joista 10 LSP-25 taajuutta kvantisoidaan ja ovat koodausnopeuden funktioita. Kvantisointibittien määrä ja kvantisointiaskeleen koko talletetaan etsintätaulukkoon ROM E:ssä 114 kullekin LSP-taajuudelle kullakin koodausnopeudella. Ylläkuvattu tarkastustaulukko esitetään taulukossa II. 30 Esimerkiksi LSP-taajuus Cöi täydellä nopeudella kvantisoidaan neljällä bitillä ja askelkoolla 0.025.
Taulukko II
31 LSP Täysino- Puoli- Neljä- Kahdeksas- peus nopeus osanope- osanopeus us (Di 4 :±0.025 2:±0.15 1:±0.01 1:±0.01 (02 4:±0.04 2:±0.15 1:±0.01 1:±0.01 ω3 4:±0.0 7 2:±0.03 1:±0.01 1:±0.01 ω4 4:±0.0 7 2:±0.03 1:±0.01 1:±0.01 ω5 4:±0.06 2:±0.02 1:±0.01 1:±0.01 (De 4 :±0.06 2:±0.02 1:±0.01 1:±0.01 ω7 4:±0.05 2:±0.02 1:±0.01 1:±0.01 ω8 4:±0.05 2:±0.02 1:±0.01 1:±0.01 (D9 4:±0.04 2:±0.02 1:±0.01 1:±0.01 ω10 4:±0.04 2:±0.02 1:±0.01 1:±0.01
Kvantisoinnin ja interpoloinnin jälkeen suoritetaan testi, jolla varmistetaan, että formanttisuodatin on stabiili kvantisoinnin vaikutusten jälkeen. LSP-5 taajuudet on erotettava ainakin 80 Hz:llä saatavan formanttisuodattimen stabiliteetin varmistamiseksi.
Jos jokin LSP-taajuuksista erotetaan alle 80 Hz:n taajuudella viereisestä LSP-taajuudesta, suoritetaan kaistan laajennus uudelleen. Lohkon 68 funktiot suori-10 tetaan DSP-ytimessä 4.
Edeten nyt lohkoon 70 kuvassa 3, LSP-taajuudet ali-päästösuodatetaan kvantisointivaikutusten vähentämiseksi yhtälössä 29 esitettävällä tavalla.
ä)i (nykyinen) = SMcbi (aikaisempi) + (1 - SM )0)i (nykyinen) (29) 15 32 missä esimerkkisovellutuksessa SM=0 täydellä nopeudella, SM=0.125 puolella nopeudella. Neljännes- ja kah-deksasosanopeudella, jos peräkkäisten neljäsosa- tai kahdeksasosanopeuden kehysten määrä on alle 10, 5 SM=0.125 ja SM=0.9 muutoin.
LSP-taajuudet interpoloidaan kullekin äänentasoalike-hykselle. Äänentasoalikehykselle interpoloituja LSP-taajuuksia käytetään vastaavalle parille koodikirja-10 alikehyksiä, paitsi kahdeksasosanopeudella. LSP- taajuudet interpoloidaan yhtälön 30 mukaisesti alla.
ö)i (nykyinen) = (Χωώ{ (aikaisempi) + (1 - αω)ώι {nykyinen) (30)
15 missä painot O® talletetaan etsintätaulukkoon ROM
E:ssä 114 kullekin äänentasoalikehykselle ja kullekin koodikirja-alikehykselle kaikilla nopeuksilla. Yllä kuvattu etsintätaulukko esitetään taulukossa III. Esimerkiksi OCco täydellä nopeudella on 0.75 äänentasoalike-20 hykselle 1 ja koodikirja-alikehyksille 1 ja 2.
Taulukko III
Äänen- Koodikir- Täysi- Puoli- Neljäs- Kahdek- taso- ja- nopeus nopeus osanopeus sasosano- alike- alikehys peus hys 1 2 3 αω=0.375 1 1 ja 2 0(0=0.75 0(0=0.625 0(0=0.375 2 3 ja 4 0(0=0.50 0(0=0.125 3 5 j a 6 O(o= 0.25 33 4 7 ja 8 0(,,= 1.0 0
Interpoloidut LSP-taajuudet muunnetaan takaisin LPC-kertoimiksi käytettäväksi äänentaso- ja koodikirja-hauissa. LPC-kertoimet PA(z):sta ja QA(z):sta laske-5 taan, kuten esitetään alla yhtälöissä 31-33.
A(z) = [Pa(z) + QAz)\/2 (31) missä: PA (z) = (1 ·+ z"1 )fl [l - 2z_1 cos(2ä®2 hi) + z~2] (32) i=i 5 ίο αΑ{ζ) = {\-ζ~ί)Υ{\ν-2ζ~ι^{2πω2]) + ζ~2] (33) 7-1
Esimerkkisovellutuksessa Taylorin sarja lasketaan DSP-ytimessä 4 kosiniarvojen laskemiseksi PA(z) ja QA(z). Taylorin sarjan laskenta aikaansaa tarkemmat kosiniar-15 vot kuin mitä aikaisemmin kuvatussa juurihaussa käytetyt. PA(z):n ja QÄ(z):n arvot lasketaan DSP-ytimessä 4 suorittamalla neliöllisten polynomien konvoluutio, kuten esitetään yhtälöissä 32-33 yllä. Lohkon 70 funktiot suoritetaan DSP-ytimessä 4.
20
Edeten nyt lohkoon 72 kuviossa 3, suoritetaan vertaileva analyysi syntetisoimalla äänentasohakuoperaatio. Tämä perusteellinen hakuproseduuri esitetään lohkojen 72-74 muodostamalla silmukalla. Äänentasoennustus teh-25 dään esimerkkisovellutuksessa äänentasoalikehyksille kaikilla muilla paitsi kahdeksasosanopeudella. Kuviossa 7 esitetty äänentasokooderi käyttää syntetisoin-tianalysointimenetelmää määrittääkseen äänentasoennus-tusparametrit (t.s. äänentasoviiveen, L, ja äänen-30 tasovahvistuksen, b). Valitut parametrit ovat ne, jot- 2 34 ka minimoivat MSE:n havainnollisesti painotetun tulo-puheen ja syntetisoidun puheen, joka on generoitu käyttäen äänentasoennustusparametreja, välillä.
5 Esillä olevan keksinnön edullisessa sovelluksessa käytetään ehdotonta havainnollista painotusta äänen-tasoennustusparametrien palauttamisessa, kuten esitettynä kuviossa 7. Kuviossa 7, havainnollinen painotus-suodatin vasteineen esitetään yhtälöllä 34 alla.
10 W{z)=^y- (34) A(^) toteutetaan suodattimien 320 ja 324 kaskadina. Ehdoton havainnollinen painotus vähentää laskennallista kompleksisuutta havainnollisessa painotussuodattimessa 15 käyttämällä suodattimen 320 lähdön uudelleen avoimen silmukan formanttijäännöksenä. Tämä suodattimen yhtälön 34 jakaminen kahteen osaan eliminoi yhden suoda-tinoperaation äänentasohaussa.
20 Tulopuhenäytteet s(n) siirretään läpi formanttiennus-tussuodattimen 320, jonka kertoimet ovat LSP-interpoloinnin ja aikaisemmin kuvatun kuvion 3 lohkon 70 LSP-LPC-muunnoksen seurauksena saatavat LPC-kertoimet. Formanttiennustussuodattimen 320 lähtö on 25 avoimen silmukan formanttijäännös, p0(n). Avoimen silmukan formanttijäännös, pQ(n), siirretään painotetun formanttisynteesisuodattimen 324 läpi alla yhtälössä 35 esitetyn siirtofunktion avulla.
1 1 30 H(z)=-- =-^-,τηίζζάζ = 0.8 (35) ΜζΙζ ι-Σ«,(*/0" /=1 35
Painotetun formanttisynteesisuodattimen 324 lähtö on havainnollisesti painotettua puhetta, x(n). Painotetun formanttisynteesisuodattimen 324 suodattimen alkutilan tai suodattimen muistin vaikutus poistetaan vähentä-5 mällä painotetun formanttisynteesisuodattimen 324 nol-latulovaste (ZIR) painotetun formanttisynteesisuodattimen 324 lähdöstä. Painotetun formanttisynteesisuodattimen 324 ZIR:n laskenta suoritetaan ZIR-elementissä 328. ZIR, aZIR(n), vähennetään havainnolli-10 sesti painotetusta puheesta, x(n), summaimessa 326. Kunkin äänentasoalikehyksen alussa ZIR-elementin 328 ja painotetun formanttisynteesisuodattimen 324 suoda-tinmuistit ovat identtiset.
Äänentasohaussa nollaosuus koodikirjavektorista olete-15 taan senhetkiselle alikehykselle avoimen silmukan for-manttijäännöksen laskennassa. Äänentasohaku suoritetaan käyttäen sekä aikaisemmin kuvattua avoimen silmukan äänentasojäännöstä, pQ(n), että suljetun silmukan formanttijäännöstä, pc(n). Suljetun silmukan formant-20 tijäännökset, pc(n), ovat äänentasosynteesisuodatti- messa 322 edellisten äänentasoalikehyksien aikana uu-delleenmuodostettuja näytteitä. Äänentasosyn-teesisuodattimen 322 siirtofunktio esitetään yhtälössä 36 alla.
25 1 1 -=-T (36) P(z) (1 -bz~L) missä äänentasoviive L ja äänentasovahvistus b lasketaan äänentasohakuproseduurien aikana aikaisemmille 30 äänentasoalikehyksille. Äänentasosynteesisuodattimen 322 tulo on herätevektori, Cb(n), joka generoidaan kertomalla koodikirjasyöte, Cb(I), indeksille I ja koodikirjavahvistus G, joka lasketaan koodikirjahaku-proseduurien aikana edellisille koodikirja- 36 alikehyksille. Näin saatua formanttijäännöstä kutsutaan suljetun silmukan formanttijäännökseksi.
Esimerkkisovellutuksessa pc(n) muodostuu 143 suljetun 5 silmukan uudelleenmuodostetusta näytteestä. Haku siirtyy laajalti avoimen silmukan hausta laajalti suljetun silmukan hakuun äänentasoalikehyksen mittaisella ikkunalla. Lp:n mittaiselle äänentasoalikehykselle n vaih-telee välillä -Lmax = 143 ja LP = -17. Esimerkkisovel-10 lutuksessa LP = 40 täydellä nopeudella, LP = 80 puolella nopeudella ja LP = 160 neljännesnopeudella. Esimerkkisovellutuksessa näytteet pc(n) ja p0(n) talletetaan vierekkäisestä, kuten esitetään kertojalla 332 mahdollistaen pc(n) ja pQ(n) arvojen syötön sekventiaa-15 lisesti yksittäisenä lohkona näytteitä LP+143 mittaisina. Näytteet talletetaan RAM B:hen 122.
Formanttijäännös p(n) muodostuu arvoista pc(n) ja Po (n), ja se siirretään läpi painotetun formanttisyn-20 teesisuodattimen 330, jonka siirtofunktio esitetään yhtälössä 37 alla.
H(z.) =—-—missä ζ = 0.8 (37) Α(ζ/ζ 25 Painotettua formanttisynteesisuodatinta 330 käytetään painotettujen syntetisoitujen puhenäytteiden, yL(n), sekvenssin LP generoimiseen kullekin äänentasoviiveen L arvolle. Painotettu syntetisoitu puhenäytesekvenssi, yL(n), ja painotettu puhenäytesekvenssi, xp(n), anne-30 taan minimointiprosessoriin 334. Koska painotetun for-manttisynteesisuodattimen 324 alkutilan vaikutukset on vähennetty, painotetun formanttisynteesisuodattimen 330 impulssivaste on laskettava. YL(n):n laskenta tuo 37 mukanaan painotetun formanttisynteesisuodattimen 330 kiertävän impulssivasteen sopivan alisekvenssin kanssa p(n):ssä painotettujen syntetisoitujen puhenäytteiden, yL(n), saamiseksi äänentasoviiveelle L.
5
Konvoluutio suoritetaan rekursiivisella tavalla DSP-ytimessä 4, kuten esitetään kuvioissa 5a - d. Joukko yL(n):n arvoja lasketaan kullekin äänentasoviivearvol-le L=17 - L=143. Painotetun formanttisynteesisuodatti-10 men 330 impulssivaste, h(n), lävistetään ensimmäisiin 20 näytteeseen esimerkkisovellutuksessa ja talletetaan RAM A:han 104. Formanttijäännös, p(n), talletetaan RAM B:hen 122. Ensimmäisen äänentasoviiveen L=17 konvoluutio suoritetaan ei-rekursiivisella tavalla kuten esi-15 tetään alla yhtälössä 38.
19 yl7(n)=h(n)* ΡΙΊ(η) = Σΐι(ΐ)ρ1Ί(η-ΐ), 0 <n<Lp (38) i=0 missä Lp on äänentasoalikehyksen mitta.
Ensimmäinen sekvenssi yi7(n) lasketaan ja talletetaan 20 RAM C:hen 142. Seuraavat sekvenssit, yL(n), äänen- tasoviiveille L=18 - L=143 lasketaan rekursiivisesti, kuten esitetään yhtälöissä 39-41 alla.
yL(n) = h(0)p(—L) n = 0 (39) 25 yL(ri) = yL_l(n-l) + h(n)p(-L) l<n<20, 17<L<143 (40) yL(n) = yL_l(n-l) 20 <n<Lp (41)
Huomaa alla yhtälössä 42 esitetty riippuvuus.
30 pL{n) = p{n-L) = pL_{{n-1), 17<L<143, 0<n<Lp (42) 38
Rekursiivisen konvoluution tehokkuutta optimoidaan jakamalla RAM:t kolmeen osaan, joista kuhunkin kuuluu sopiva osoiteyksikkö lataus- ja tallennusoperaatioiden ohjaamiseksi. Tätä pidetään kolmiosaisena RAM:na. Kon-5 voluutioarvojen laskenta yhtälössä 40 ja tuloksen muo dostaminen kussakin kellojaksossa on siten mahdollista. Esimerkiksi yhdessä kellojaksossa yia(10) lasketaan, y ig (9) talletetaan, y17(10) haetaan ja h (10) haetaan. Näin ollen yhtälö 40 voi tuottaa tuloksen kussa-10 kin jaksossa. Tuloksen tuottaminen yhtälöstä 41 kussakin jaksossa on myös mahdollista. Esimerkiksi yhdessä jaksossa yig(24) lasketaan, yi7(24) haetaan ja yig(23) talletetaan.
Kyky suorittaa yhtälöt 40 ja 41 ilman tarvetta siirtää 15 aikaisemmin laskettuja puhesynteesinäytteitä yL_i(n-l) samaan lähde-RAM:iin kunkin äänentasoviivepäivityksen yhteydessä vaatii tallennusstrategian ja laitteistoky-vyn, jota pidetään ping-pongina, jossa lähde- ja koh-de-RAM:eja vaihdellaan kunkin viivepäivityksen yhtey-20 dessä. Laskettaessa yL(n):n arvoja parillisille äänen-tasoviivearvoille, yL_i(n-l), arvot haetaan ensimmäisestä kolmesta RAM:stä ja tulokset talletetaan toiseen kolmesta RAM:stä. Laskettaessa yL(n):n arvoja parittomille äänentasoviivearvoille, yL_i(n-l), arvot haetaan 25 toisesta kolmesta RAM:stä ja tulokset talletetaan ensimmäiseen kolmesta RAM:stä. Tämä ping-pong eliminoi tarpeen siirtää uutena lasketut yL(n):n arvot samaan RAM:ään ja aikaisemmin lasketut yL_i(n-l):n arvot siitä pois kunkin äänentasoviivepäivityksen välillä.
30
Kuvio 8 on vuokaavio konvoluutio-osuuden suorittamisesta (sekä alkuperäiselle ei-rekursiiviselle että rekursiiviselle konvoluutiolle) esimerkkisovellutuksen äänentasohaussa. Lohkossa 350 äänentasoviive L aluste-35 taan alimpaan arvoonsa, joka esimerkkisovellutuksessa on 17. Näytenumero n ja suodatinindeksi m asetetaan 39 nollaksi ja arvot yi7(n) asetetaan nollaksi. Lohkot 352 - 360 muodostavat alkukonvoluutiosilmukan, joka lasketaan ei-rekursiivisella tavalla. Alkukonvoluution laskenta, jossa L=17, suoritetaan allaolevan yhtälön 43 5 mukaisesti.
19 y17(n) = ^h(i)pl7(n-i), 0 <n<Lp (43) i=0
Alkukonvoluution laskennassa käytetään kiinteänmittai-10 siä silmukoita laskennallisen kompleksisuuden vähentämiseksi. Tällä tavalla vältetään ylimääräisyys, joka vaaditaan vaihtuvamittaisen silmukkarakenteen muodostamiseksi yhtälön 43 sisemmässä silmukassa (lohkot 356-360). Kukin arvo y77(n) lähetetään minimointipro-15 sessorille laskennan jälkeen.
Lohko 352 testaa näyteindeksin n. Jos n vastaa äänen-tasoalikehyksen pituutta Lp, alkukonvoluutio on täydellinen ja edetään lohkoon 362. Jos lohkossa 352 n on 20 pienempi kuin äänentasoalikehyksen pituus, edetään lohkoon 356. Lohko 356 testaa indeksin m. Jos m on yhtäsuuri kuin suodattimen impulssivasteen pituus, 20 esimerkkisovellutuksessa, iteraatio on suoritettu ja edetään lohkoon 354, jossa m asetetaan nollaksi ja 25 kasvatetaan n:ää. Seuraavaksi vuo palaa lohkoon 352. Jos lohkossa 356 m on pienempi kuin impulssivasteen pituus, edetään lohkoon 360, missä kerätään osittaiset summat. Edetään lohkoon 358, jossa kasvatetaan m:ää ja edetään lohkoon 356.
Lohkoilla 352-360 muodostetun silmukan alkukonvoluution liittyvät operaatiot suoritetaan DSP-ytimessä, jossa on annettu sopiva peräkkäinsuoritus tulojen kerää- 30 40 miseksi, kuten esitetään lohkossa 360, kullekin kello-jaksolle. Seuraavat operaatiot kuvaavat laskennan pe-räkkäinsuoritusta ja ne tapahtuvat DSP-ytimessä 4 yhden kellojakson aikana. Suodattimen vastearvo h(m+l) 5 haetaan RAM A:sta 104 ja annetaan AREG:iin 130. For-manttijäännösarvo p(n-17) haetaan RAM B:stä 122 ja annetaan BREG:iin 134. Osasumma yi7(n+m+l), joka on C0REG:ssä 164 annetaan RAM C:hen 182 multiplekserien 168 ja 180 kautta. Osasumma yi7(n+m+l) annetaan RAM 10 C:llä 182 DREG:iin 156 multiplekserin 158 kautta. Arvot h(m) ja p(n-17) AREGrssä 130 ja BREGrssä 134, vastaavasti, annetaan kertojaan 132. Kertojan 132 lähtö annetaan multiplekserin 138 kautta ryhmäsiirtimeen 140, joka normalisoi arvon SREG:n 136 multiplekserin 15 149 kautta antaman skaalausarvon mukaisesti. SREGtssä 136 olevaa arvoa tarvitaan p(n-17):n sekvenssin normalisointiin. Tämän normalisointikertoimen käyttö p(n- 17):n ja h(m):n tuloon johtaa samaa vaikutukseen kuin p(n-17):n normalisointi, koska tulon täysi tarkkuus 20 ylläpidetään ennen normalisointia ryhmäsiirtimessä.
Normalisoitu arvo annetaan summaimen 146 ensimmäiseen tuloon. Osasumma, yi7(n+m) annetaan DREG:llä 156 multiplekserin 154, estetyn invertterin 152 ja ryhmäsiirti-men 150 kautta summaimen 146 toiseen tuloon. Summaimen 25 146 lähtö annetaan multiplekserin 148 kautta C0REG:iin 164. Kun indeksi saavuttaa suurimman sallitun arvonsa lohkossa 352, alkukonvoluutio on suoritettu ja RAM C:ssä 182 olevat osasummat ovat nyt konvoluution lopullisia tuloksia.
30
Kun alkukonvoluutio on suoritettu, edetään lohkoon 362, jossa suoritetaan rekursiivinen konvoluutio jäl-jelläolevien äänentasoviivearvojen laskemiseksi.
41
Lohkossa 362 näyteindeksi n asetetaan nollaksi ja ää-nentasoviiveindeksi L:ää kasvatetaan. Vuo jatkaa lohkoon 364. Lohko 364 testaa L:n. Jos L on suurempi kuin suurin äänentasoviivearvo, 143 esimerkkisovellutukses-5 sa, vuo jatkaa lohkoon 366, jossa äänentasohakuoperaa-tio keskeytyy. Jos L on pienempi tai yhtäsuuri kuin 143, vuo jatkaa lohkoon 368. Lohko 368 ohjaa edellä kuvattua ping-pong-operaatiota. Lohkossa 368 testataan L:ää sen parillisuuden tai parittomuuden määrittämi-10 seksi. Jos L on parillinen, vuo jatkaa lohkoon 378 (Tapauksena I kuvattu operaatio). Jos L on pariton, niin vuo jatkaa lohkoon 370 (Tapauksena II kuvattu operaatio).
15 Tapaus I:(ääneniasoviiveen L parilliset arvot)
Lohkossa 378 yL(0) lasketaan yhtälön 39 mukaisesti. Osoiteyksikkö A 102 antaa osoitearvon RAM A:lle 104, joka vastauksena antaa h(0):n multiplekserin 108 kaut-20 ta AREGriin 130. Samassa kellojaksossa osoiteyksikkö B 120 antaa osoitearvon RAM B:lle 122, joka vastauksena antaa p(-L):n multiplekserin 116 kautta BREG:iin 134. Seuraavan kellojakson aikana AREG 130 antaa h(0):n ja BREG antaa p(-L):n kertojalle 132, jossa kaksi arvoa 25 kerrotaan ja tulo annetaan multiplekserin 138 kautta ryhmäsiirtimeen 140. Ryhmäsiirrin 140 SREG:n multiplekserin 149 kautta antaman arvon mukaisesti normalisoi tulon ja antaa normalisoidun tulon summaimen 146 ensimmäiseen tuloon. Summaimen 146 toiseen tuloon an-30 netaan nolla multiplekserin 154, estetyn invertterin 152 ja ryhmäsiirtimen 152 kautta. Summaimen 146 lähtö annetaan C0REG:iin 164 multiplekserin 148 kautta. Saman kellojakson aikana yL-i(0) ja h(l) haetaan RAM B:stä 122 ja RAM A:sta 104 ja annetaan DREG:hen 156 ja AREG:hen 130 multiplekserien 158 ja 108 kautta, vas taavasti .
42
Lohkossa 380 syntetisoitua puhenäyteindeksiä n lisä-5 tään. Ohjauslohkossa 382, jos syntetisoitu puhenäy-teindeksi on alle 20, niin edetään lohkoon 384.
Lohkossa 384 uusi yL(n) arvo lasketaan kussakin kello-jaksossa yhtälön 40 mukaan. Sopiva asetus, joka vaadi-10 taan ennen lohkon 384 ensimmäistä iteraatiota arvojen yL_i(n-l) ja h(n) alustamiseksi, saatiin lohkossa 378 yllä kuvatulla tavalla. Sopiva puhdistus vaaditaan myös lohkon 384 viimeisen iteraation jälkeen lopullisen arvon yL(19) tallettamiseksi.
15 Lohkon 384 ensimmäisessä iteraatiossa yL(0), joka on laskettu lohkossa 378, on läsnä C0REG:ssä 164. C0REG 164 antaa yL(0):n multiplekserien 168 ja 180 kautta RAM C:hen 182 talletettavaksi yhdessä RAM C:hen 182 osoiteyksikkö C:stä 186 annetun osoitteen kanssa.
20 yL(0) annetaan minimointiprosessorille 334 samalla kun se annetaan RAM C:hen 182.
Lohkossa 384 seuraavat operaatiot suoritetaan yhdessä kellojaksossa. yL_i(n) arvo annetaan RAM B:llä 122 25 osoiteyksikkö B:n 120 antaman osoitteen mukaisesti multiplekserien 116 ja 158 kautta DREGriin 156. Im-pulssivaste h(n+l) annetaan RAM A:lla 104 osoiteyksikkö A:n 102 antaman osoitteen mukaisesti multiplekserin 108 kautta AREG:iin. DREG 156 antaa yL-i(n-l):n multi-30 plekserin 154, estetyn invertterielementin 152 ja ryh-mäsiirtimen 150 kautta summaimen 146 ensimmäiseen tuloon. AREG 130 antaa h(n):n ja BREG antaa p(-L):n kertojaan 132, jossa kaksi arvoa kerrotaan ja tulo annetaan kertojalla 132 multiplekserin 138 kautta ryhmä- 43 siirtimeen 140. Ryhmäsiirrin 140 SREG:n 136 antaman arvon mukaisesti normalisoi tulon ja antaa normalisoidun tuloarvon summaimen 146 toiseen tuloon. Summaimen 146 lähtö annetaan multiplekserin 148 kautta C0REG:iin 5 164. COREGin 164 arvo, joka on laskettu edellisessä iteraatiossa, annetaan multiplekserien 168 ja 180 kautta RAM C:hen 182 talletettavaksi ja minimointipro-sessoriin 334.
10 Lohkossa 380 syntetisoitua puhenäyteindeksiä n lisätään. Ohjauslohkossa 382, jos syntetisoidun puhenäyt-teen indeksi n on yhtäsuuri kuin 20, lasketaan yL (19) viimeisessä iteraatiossa, annetaan multiplekserien 168 ja 124 kautta RAM B:hen 122, talletettavaksi rengas-15 puskuriin ja minimointiprosessoriin 334 ennen etenemistä lohkoon 390.
Tapauksen I loppu 20 Tapaus II:(äänentasoviiveen L parittomat arvot)
Lohkossa 370 yL(0) lasketaan yhtälön 39 mukaisesti. Osoiteyksikkö A 102 antaa osoitearvon RAM A:han 104, joka vastauksena antaa h(0):n multiplekserin 108 kaut-25 ta AREG:iin 130. Samassa kellojaksossa osoiteyksikkö B 120 antaa osoitearvon RAM B:hen 122, joka vastauksena antaa p(-L):n multiplekserin 116 kautta BREG:iin 134. Seuraavan kellojakson aikana AREG 130 antaa h(0):n ja BREG antaa p(-L):n kertojalle 132, jossa kaksi arvoa 30 kerrotaan ja tulo annetaan multiplekserin 138 kautta ryhmäsiirtimeen 140. Ryhmäsiirrin 140 SREG:n multiplekserin 149 kautta antaman arvon mukaisesti normalisoi tulon ja antaa normalisoidun tulon summaimen 146 ensimmäiseen tuloon. Summaimen 146 toiseen tuloon an- 44 netaan nolla multiplekserin 154, estetyn invertterin 152 ja ryhmäsiirtimen 152 kautta. Summaimen 146 lähtö annetaan COREGiiin 164 multiplekserin 148 kautta. Saman kellojakson aikana yL_i(0) ja h(l) haetaan RAM 5 C:stä 182 ja RAM A:sta 104 ja annetaan DREGiiin 156 ja AREGiiin 130 multiplekserien 158 ja 108 kautta, vastaavasti .
Lohkossa 372 syntetisoidun puhenäytteen indeksiä n li-10 sätään. Ohjauslohkossa 374, jos syntetisoidun puhe-näytteen indeksi n on alle 20 niin edetään lohkoon 376 .
Lohkossa 376 uusi yL(n):n arvo lasketaan kussakin kel-15 lojaksossa yhtälön 40 mukaan. Sopiva asetus, joka vaaditaan ennen lohkon 376 ensimmäistä iteraatiota arvojen yL_i(n-l) ja h(n) alustamiseksi, saatiin lohkossa 370 yllä kuvatulla tavalla. Sopiva puhdistus vaaditaan myös lohkon 376 viimeisen iteraation jälkeen lopulli-20 sen arvon yL(19) tallettamiseksi.
Lohkon 376 ensimmäisessä iteraatiossa yL(0), joka on laskettu lohkossa 370, on läsnä COREGissä 164. C0REG 164 antaa yL(0):n multiplekserien 168 ja 180 kautta 25 RAM B:hen 122 talletettavaksi yhdessä osoiteyksikkö B:n 120 RAM B:hen 122 antaman osoitteen kanssa. yL(0) annetaan minimointiprosessorille 334 samalla kun se annetaan RAM B:hen 122.
30 Lohkossa 376 seuraavat operaatiot suoritetaan yhdessä jaksossa. yL_i(n) arvo annetaan RAM C:llä 182 osoiteyksikkö C:n 186 antaman osoitteen mukaisesti multiplekserin 158 kautta DREG:iin 156. Impulssivastearvo h(n+l) annetaan RAM Ailia 104 osoiteyksikkö A:n 102 45 antaman osoitteen mukaisesti multiplekserin 108 kautta AREGriin. DREG 156 antaa yL_i(n-l):n multiplekserin 154, estetyn invertterielementin 152 ja ryhmäsiirtimen 150 kautta summaimen 146 ensimmäiseen tuloon. AREG 130 5 antaa h(n):n ja BREG antaa p(-L):n kertojaan 132, jossa kaksi arvoa kerrotaan ja tulo annetaan kertojalla 132 multiplekserin 138 kautta ryhmäsiirtimeen 140. Ryhmäsiirrin 140 SREG:n 136 antaman arvon mukaisesti normalisoi tulon ja antaa normalisoidun tuloarvon sum- 10 maimen 146 toiseen tuloon. Summaimen 146 lähtö annetaan multiplekserin 148 kautta C0REG:iin 164. COREGin 164 arvo, joka on laskettu edellisessä iteraatiossa, annetaan multiplekserien 168 ja 124 kautta RAM B:hen 122 talletettavaksi ja minimointiprosessoriin 334.
15 Lohkossa 372 syntetisoidun puheen näyteindeksiä n lisätään. Ohjauslohkossa 382, jos syntetisoidun puheen näytteen indeksi n on yhtäsuuri kuin 20, lasketaan yL(19) viimeisessä iteraatiossa, annetaan multiplekse-rien 168 ja 124 kautta RAM B:hen 122 talletettavaksi 20 rengaspuskuriin RAM B:ssä 122 ja minimointiprosesso-riin 334 ennen etenemistä lohkoon 390.
Tapauksen II loppu 25 Ennen lohkon 390 ensimmäistä iteraatiota yL_i(19) haetaan rengaspuskurista RAM B:ssä 122 ja ladataan BREG:iin 134, seuraavaksi yL_i (19) siirretään BREG:stä 134 C0REG:iin 164, jonka jälkeen yL_!(20) haetaan rengaspuskurista RAM B:ssä 122 ja ladataan BREG:iin 134.
30
Lohkossa 390 lasketaan uusi yL(n) kussakin kellojaksossa yhtälön 41 mukaan. Seuraavat operaatiot suoritetaan yhdessä kellojaksossa. yL_i(n-2) annetaan BREG:illä 134 C0REG:iin 164. yL_i(n-3) haetaan rengas- 46 puskurista RAM B:ssä 122 ja ladataan BREG:iin 134. COREGrssä oleva yL-i(n-l) esitetään minimointiprosesso-rille 334. Lohkon 390 viimeisen iteroinnin jälkeen, yL_ i(LP-2) poistetaan rengaspuskurista RAM B:ssä 122. Li-5 säämällä elementti rengaspuskurin kuhunkin äänen- tasoviiveeseen ja poistamalla elementti rengaspuskurin kustakin äänentasoviiveestä, pidetään rengaspuskurin kokona LP-19.
10 Rengaspuskurin toteutus saadaan erityisten osoiterekisterien kautta osoiteyksikössä B 120, joka määrää pisteiden kiertämisen niin, että sekventiaalista muistia voidaan osoittaa automaattisesti rengasmaisesti.
15 Lohkossa 386, syntetisoidun puhenäytteen indeksiä n lisätään. Ohjauslohkossa 388, jos syntetisoidun puhe-näytteen indeksi n on pienempi kuin LP, edetään uudelleen lohkoon 390. Jos syntetisoidun puhenäytteen indeksi n on yhtäsuuri kuin LP, niin senhetkiselle ää-20 nentasoviiveelle on laskettu kaikki yL(n) arvot ja palataan lohkoon 362.
Ennen syntetisoitujen puhenäytteiden yL(n) laskentaa, LP:n mittainen sekvenssi havainnollisesti painotettuja 25 puhenäytteitä, Xp(n), annetaan minimointiprosessorille 334. Kuten aikaisemmin esitettiin, syntetisoitujen puhenäytteiden yL(n) LP:n mittaiset sekvenssit viivear-voille L=17 - L=143 annetaan minimointiprosessorille 334 alku- ja rekursiivisten konvoluutiolaskentojen ai-30 kana. Syntetisoidut puhenäytteet annetaan jaksoittain minimointiprosessorille 334. Minimointiprosessori 334 laskee kunkin syntetisoitujen puhenäytteiden yL(n) sekvenssin autokorrelaation ja ristikorrelaation kunkin syntetisoitujen puhenäytteiden yL(n) sekvenssin ja 35 havainnollisesti painotettujen puhenäytteiden xp(n) 47 sekvenssin välillä. Näistä korrelaatioarvoista mini-mointiprosessori 334 sitten laskee suhteellisen mitan MSE:stä jokaisen syntetisoidun puhenäytesekvenssin, yL(n), ja havainnollisesti painotettujen puhenäyttei-5 den, xp(n), välillä. Kullekin äänentasoviiveelle L, lasketaan MSE syntetisoidun puhenäytesekvenssin kaikilla mahdollisilla äänentasovahvistuksilla b. Mini-mointiprosessori 334 löytää minimi-MSE:n kaikkien ää-nentasoviivearvojen L yli ja kaikkien mahdollisten ää-10 nentasovahvistusarvojen yli ylläpitämällä MSE-minimiä nykyisen äänentasoviiveen L ja nykyisen äänentasovah-vistuksen b kautta. Äänentasoviive-estimaatti L ja äänentasovahvistusestimaatti-indeksi b vastaten MSE-minimiä ylläpidetään myös minimointiprosessorilla 334. 15 Jokaista uutta MSE-arvoa verrataan minimointiprosessorilla ylläpidettyyn MSE:hen. Jos uusi MSE on pienempi kuin minimi-MSE, niin minimi-MSE korvataan uudella
A
MSE-arvolla ja äänentasoviive-estimaatti L ja äänentasovahvistusest imaatt i-indeksi b päivitetään vastaa-20 maan uutta minimiä MSE:tä. MSE-minimi ja vastaava äänentasoviive-est imaatt i L ja äänentasovahvistusesti-maatti-indeksi b, joita ylläpidetään minimointiproses-sorissa 334, alustetaan kussakin äänentasoalikehykses-sä käyttäen ensimmäistä negatiivista MSE-arvoa, joka 25 on laskettu äänentasoalikehyksen aikana. Kaikkien ää-nentasoviivearvojen L ja äänentasovahvistusarvojen b käyttämisen jälkeen, äänentasoviive-estimaatti L ja äänentasovahvistusestimaatti-indeksi b ovat optimaalinen äänentasoviiveindeksi ja optimaalinen äänen-30 tasovahvistusindeksi, vastaavasti senhetkiselle äänen-tasoalikehykselle. Minimointiprosessori 334 antaa optimaalisen äänentasoviiveen L ja optimaalisen äänen-tasovahvistusindeksin b DSP-ytimeen 4. Optimaalinen äänentasoviive L ja optimaalinen äänentasovahvis-35 tusindeksi b ovat ne, jotka johtavat minimi-MSE:hen havainnollisesti painotettujen puhenäytteiden xp(n) ja painotettujen syntetisoitujen puhenäytteiden yL(n) vä- 48
Iillä. MSE on äänentasoviiveen L ja äänentasovahvis-tuksen b funktio, kuten alla yhtälöissä 44 - 46 kuvataan : f _] 2 5 MSE{L,b)=Yj(xp{n)-byL{n)) (44) n=0 L — i 2 £ _ i L —1 2 = Σ(ν«)) (45) n=0 n=0 n=0 = Expxp-2bExpyL+b2EyLyL (46) EXpXp on havainnollisesti painotettujen puhenäytteiden 10 xP(n) autokorrelaatio. ExpyL on havainnollisesti painotettujen puhenäytteiden xp(n) ja painotettujen syntetisoitujen puhenäytteiden yL(n) välinen ristikorrelaa-tio. EyLyL on painotettujen syntetisoitujen puhenäytteiden yL(n) autokorrelaatio.
15
Havainnollisesti painotettujen puhenäytteiden xp(n) autokorrelaatio Expxp ei ole äänentasovahvistuksen b funktio. Expxp pysyy vakiona kunkin äänentasoalikehyk-sen aikana ja siksi se ei vaikuta optimaalisen äänen-20 tasoviiveen valintaan. Yhtälöiden 44 - 46 minimointi äänentasoviiveen L ja äänentasovahvistuksen b suhteen on vastaava kuin allaolevan yhtälön 47 minimointi.
MSE(L,b) = -2bExpyL+b2EyLyL (47) 25
Minimointiprosessori 334 laskee painotetun syntetisoidun puhenäytesekvenssin yL(n) autokorrelaatiot, EyLyL, ja havainnollisesti painotetun puhenäytesekvenssin xp(n) ja painotetun syntetisoidun puhenäytesekvenssin 30 yL(n) väliset ristikorrelaatiot ExpyL. Kullekin korre- 49 laatioparille (ExpyL, EyLyL) minimointiprosessori 334 laskee suhteellisen MSE:n ylläolevan yhtälön 47 mukaan joukolle äänentasovahvistusarvoja b. Korrelaatioiden ExpyL, ja 5 EyLyL laskenta suoritetaan samanaikaisesti minimointi-prosessorissa 334. Suhteelliset MSE-arvot lasketaan ja päätökset liittyen MSE-minimointiin tehdään äänen-tasoviiveelle L, kun taas korrelaatioarvot lasketaan äänentasoviiveelle L + 1.
10
Kuviot 6a ja 6b esittävät minimointiprosessorin 334 esimerkkisovellutusta. Havainnollisesti painotetut pu-henäytteet, xp(n), annetaan DSP-ytimellä 4 lukkopii-riin 210 talletettavaksi RAM X:ään 212 ohjauksen 220 15 antaman osoitteen mukaisesti. Skaalatut äänentasovah-vistusarvot, -2b, arvolla b=0.25 - b=2.0, 0.25 askeleen välein annetaan multiplekserin 260 kautta DSP-ytimellä 4 talletettavaksi lukkopiireihin 264, 268, 272, 276, 280, 284, 288 ja 292 vastaavasti. Vastaavat 20 skaalatut äänentasovahvistusarvot, b2, annetaan multiplekserin 260 kautta DSP-ytimellä 4 talletettavaksi lukkopiireihin 262, 266, 270, 274, 278, 282, 286 ja 290, vastaavasti. Multiplekseri 260 antaa arvot suoraan lukkopiiriin 262. Lukkopiiri 262 antaa arvot suo-25 raan lukkopiiriin 264. Lukkopiiri 276 antaa arvot rekisteriin 278 multiplekserin 294 kautta. Rekisteri 290 antaa arvot suoraan lukkopiiriin 292 ja niin edelleen. Arvojen siirtäminen lukkopiirien 262 - 292 kautta ja multiplekserin 294 kautta mahdollistaa arvojen antami-30 sen multiplekserin 260 kautta kaikkiin lukkopiireihin rengaspuskurissa 259. Havainnollisesti painotettujen puhenäytteiden xp(n) ja arvojen -2b ja b2 tallentamisen jälkeen annetaan painotettujen syntetisoitujen puhe-näytteiden yL(n) sekvenssit lukkopiiriin 210. Painote-35 tut syntetisoitujen puhenäytteet yL(n) annetaan lukko-piirillä 210 kertojan 216 kahteen tuloon, joka tuottaa 50 painotettujen syntetisoitujen puhenäytteiden neliöt (yL(n))2. Lisäksi lukkopiiri 210 antaa painotetut syntetisoidut puhenäytteet yL(n) kertojan 218 ensimmäiseen tuloon. RAM X 212 antaa havainnollisesti painote-5 tut puhenäytteet xp(n) lukkopiirin 214 kautta kertojan 218 toiseen tuloon. Kertoja 218 laskee tuloarvot xP(n)yL(n). Uusi neliö (yL(n))2 ja uusi tulo xp(n)yL(n) lasketaan jokaisessa jaksossa kertojilla 216 ja 218, vastaavasti. Näyteindeksi n vaihtelee 0:sta Lp - l:een 10 kullakin äänentasoviiveellä L.
Painotettujen syntetisoitujen puhenäytteiden toiset potenssit (yL(n))2 annetaan kerääjään 221. Tuloarvot Xp(n)YL(n) annetaan kerääjään 231. Kerääjä 221 laskee 15 Lp neliöiden summat kullekin äänentasoviiveelle L. Kerääjä 231 laskee Lp tuloarvot kullekin äänentasoviiveelle L.
Ennen uutta äänentasoviivettä, rekisteriin 226 anne-20 taan nolla multiplekserin 224 kautta. Seuraavaksi kerääjä 221 on valmis laskemaan autokorrelaation EyLyL nykyiselle äänentasoviiveelle L. Kerääjässä 221 neliöt (yL(n))2 annetaan summaimen 222 ensimmäiseen tuloon. Ajonaikainen kokonaissumma annetaan lukkopiirillä 226 25 summaimen 222 toiseen tuloon. Uutena laskettu ajonaikainen kokonaissumma annetaan summaimella 222 multiplekserin 224 kautta lukkopiiriin 226 tallennusta varten. Kaikkien L:n Lp-arvojen keräämisen jälkeen annetaan autokorrelaatio EyLyL lukkopiiriin 228 tallenta-30 mistä varten.
Ennen kutakin uutta äänentasoviivettä lukkopiiriin 236 annetaan nolla multiplekserin 234 kautta. Seuraavaksi kerääjä 231 on valmis laskemaan ristikorrelaation ExpyL 35 nykyiselle äänentasoviiveelle L. Kerääjässä 231 tulo- 51 arvot Xp(n)yL(n) annetaan summaimen 232 ensimmäiseen tuloon. Ajonaikainen kokonaissumma annetaan lukkopii-rillä 236 summaimen 232 toiseen tuloon. Uutena laskettu ajonaikainen kokonaissumma annetaan summaimella 232 5 multiplekserin 234 kautta lukkopiiriin 236. Kaikkien L:n Lp-arvojen keräämisen jälkeen annetaan ristikorre-laatio ExpyL lukkopiiriin 238 tallettamista varten.
Yhtälöllä 47 kuvattu MSE lasketaan seuraavaksi kahdes-10 sa jaksoprosessissa alla kuvatulla tavalla.
Ensimmäisessä kahdesta jaksosta lukkopiiri 238 antaa havainnollisesti painotettujen puhenäytteiden ja painotettujen syntetisoitujen puhenäytteiden välisen ris-15 tikorrelaation ExpyL multiplekserin 230 kautta kertojan 240 ensimmäiseen tuloon. Rengaspuskuri 259 antaa skaalatun äänentasovahvistuksen -2b kertojan 240 toiseen tuloon multiplekserin 296 kautta. Tulo -2bExpyL annetaan kertojalla 240 summaimen 242 ensimmäiseen tuloon. 20 Summaimen 242 toiseen tuloon annetaan nolla multiplekserin 246 kautta. Summaimen 242 lähtö annetaan lukko-piiriin 244 tallettamista varten. Arvot rengaspuskurin lukkopiireissä 262 - 292 kierrätetään antamalla lukko-piirin 276 lähtö lukkopiiriin 278 multiplekserin 294 25 kautta ja antamalla lukkopiirin 292 lähtö lukkopiiriin 262 multiplekserin 260 kautta. Tämän kierron jälkeen lukkopiirit 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290 ja 292 sisältävät arvot, jotka aiemmin olivat lukkopiireissä 292, 262, 30 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288 ja 290, vastaavasti. Äänentasohaussa rengas-puskuri koostuu lukkopiireistä 262 - 292 ja rengaspuskurin multipleksereistä 260 ja 294. Kiertämällä arvot rengaspuskurissa 259, lukkopiiri 292 antaa -2b:n ja 35 b2:n ensimmäisessä ja toisessa jaksossa vastaavasti.
52
Toisessa kahdesta jaksosta lukkopiiri 228 antaa painotettujen syntetisoitujen puhenäytteiden autokorrelaation EyLyL multiplekserin 230 kautta kertojan 240 ensimmäiseen tuloon. Rengaspuskuri 259 antaa skaalatun 5 äänentasovahvistusarvon b2 kertojan 240 toiseen tuloon multiplekserin 296 kautta. Tulo b2EyLyL annetaan kertojalla 240 summaimen 242 ensimmäiseen tuloon. Summaimen 242 toiseen tuloon annetaan lukkopiirin 244 lähtö, -2bExpyL, multiplekserin 246 kautta. Summain 242 antaa -10 2bExpyL + b2EyLyL lukkopiiriin 244 tallettamista varten. Arvot rengaspuskurin 259 lukkopiireissä 262 - 292 sitten kierretään ylläkuvatulla tavalla.
Kaksi ylläkuvattua jaksoprosessia toistetaan kaikille 15 kahdeksalle skaalattujen äänentasovahvistusarvojen parille (-2b, b2) . MSE-arvon -2bExpyL + b2ExpyL laskentaa seuraavan kahden jakson aikana lasketaan uusi MSE-arvo käyttämällä uutta paria arvoista -2b ja b2. Ennen lukkopiirin 244 päivittämistä uudella MSE-arvolla, ny-20 kyistä MSE-arvoa verrataan nykyiseen MSE-minimiin, joka on talletettu lukkopiiriin 250 nykyistä äänen-tasoalikehystä varten. Nykyinen MSE-arvo -2bExpyL + b2yLyL annetaan lukkopiirillä 244 vähentäjän 248 positiiviseen tuloon. Lukkopiiri 250 antaa senhetkisen 25 MSE-minimin vähentäjän 248 negatiiviseen tuloon. Ohjaus 220 seuraa erotuksen tulosta vähentäjältä 248. Jos ero on negatiivinen, nykyinen MSE-arvo on uusi MSE-minimi nykyiselle äänentasoalikehykselle ja talletetaan lukkopiiriin 250 ja vastaava äänentasoviive-30 estimaatti L sekä äänentasovahvistusestimaatti- indeksi b päivitetään ohjauksessa 220. Jos ero on ei-negatiivinen, nykyinen MSE-arvo jätetään huomiotta.
Ennen kutakin äänentasoalikehystä, DSP-ydin 4 antaa 35 komennon minimointiprosessorille 334 ilmoittaen ohja- 53 ukselle 220, että uusi äänentasoalikehys on tulossa. Komennon vastaanoton yhteydessä nykyinen äänentasovii-ve ja nykyinen äänentasovahvistusindeksi asetetaan 0:ksi ohjauksessa 220. Ennen uutta painotettujen syn-5 tetisoitujen puhenäytteiden sekvenssiä puhenäytteet annetaan minimointiprosessorille 334, DSP-ydin 4 antaa komennon minimointiprosessorille 334 ilmoittaen ohjaukselle 220, että uusi painotettujen syntetisoitujen puhenäytteiden sekvenssi on tulossa. Tämän komennon 10 vastaanoton yhteydessä nykyinen äänentasoviive ja nykyinen äänentasovahvistusindeksi kasvatetaan l:llä ohjauksella 220 vastaten äänentasoviiveen lisäystä 1 ja äänentasovahvistusindeksin lisäystä 0.25. Kun painotettujen syntetisoitujen puhenäytteiden ensimmäinen 15 sekvenssi annetaan minimointiprosessorille 334, nykyinen äänentasoviive ja nykyinen äänentasovahvistusindeksi vastaavat l:stä vastaten äänentasoviivettä L=17 ja normalisoitua äänentasovahvistusta b=0.25. Lisäksi ennen kutakin äänentasoalikehystä, nykyinen äänen-20 tasoviive-estimaatti L ja nykyinen äänentasovahvistu-sestimaatti-indeksi b asetetaan nollaksi, mikä osoittaa mitätöntä äänentasoviivettä ja äänentasovahvistusta. Kunkin äänentasoalikehyksen aikana ohjaus 220 tunnistaa ensimmäisen negatiivisen MSEn lukkopiirissä 25 244. Tämä arvo talletetaan lukkopiiriin 250 ja vastaa-
A
vat äänentasoviive-estimaatti L ja äänentasovahvistu-sestimaatti-indeksi b päivitetään ohjauksessa 220. Tämä tehdään MSE-minimin alustamiseksi lukkopiirissä 250 kullakin äänentasoalikehyksellä. Ellei negatiivista 30 MSE-arvoa saada äänentasoalikehyksen aikana, äänentasoviive-estimaatti L ja äänentasovahvistusestimaat-ti-indeksi b ovat nollia äänentasoalikehyksen lopussa. Nämä estimaatit annetaan ohjauksella 220 DSP-ytimeen 4. Jos DSP-ydin vastaanottaa mitättömän äänentasovii-35 ve-estimaatin, optimaalinen äänentasovahvistus asetetaan nollaksi, b = 0 vastaten nolla-MSE:tä. Kun äänen-tasosuodattimen äänentasovahvistus on asetettu nol- 54 laan, äänentasoviiveellä ei ole seurausta. Jos DSP-ydin 4 vastaanottaa voimassaolevan äänentasoviive-estimaatin L, niin tätä arvoa käytetään optimaalisena äänentasoviiveenä ja optimaalisena äänentasovahvistuk-5 sena tulee olemaan 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75 ja 20 äänentasovahvistusestimaatti-indekseille l:stä 8:aan, vastaavasti.
Äänentasohaussa yhtälön 47 MSE-funktion MSE(L,b) luon-10 ne mahdollistaa laskennallisten säästöjen aikaansaamisen. Nykyisen äänentasoviiveen jäljelle jäävät laskennat voidaan keskeyttää kun on määritetty, että jäljelle jäävät MSE-arvot, jotka vielä on laskematta nykyiselle äänentasoviiveelle, eivät voi johtaa MSE-arvoon, 15 joka on pienempi kuin lukkopiiriin 250 talletettu MSE-minimi. Esimerkkisovellutuksessa minimointiprosesso-rissa 334 käytetään kolmea tekniikkaa laskennan säästämiseksi äänentasohaussa. MSE-funktiot, MSE(L,b), ovat neliöllisiä b:n suhteen. Yksi neliöllinen yhtälö 20 muodostetaan kutakin äänentasoviivettä L varten. Kaikki nämä neliölliset yhtälöt kulkevat origon kautta, b=0 ja MSE(L,b)=0. Äänentasovahvistusarvo b=0 kuuluu mahdollisten vahvistusarvojen joukkoon, vaikkakaan sitä ei tarkoituksella haeta äänentasohakuoperaatiossa.
25
Ensimmäiseen laskennan säästämismenetelmään kuuluu MSE-arvojen laskennan keskeyttäminen nykyisen äänentasoviiveen äänentasohakuproseduurissa kun ExpyL on negatiivinen. Kaikki äänentasovahvistusarvot ovat posi-30 tiivisia, mikä varmistaa sen, että nolla on yläraja MSE-minimille kullakin alikehyksellä. ExpyL:n negatiivinen arvo johtaisi positiiviseen MSE-arvoon ja olisi näin ollen alioptimaalinen.
55
Toiseen laskennan säästämismenetelmään kuuluu jäljellä olevien MSE-arvojen laskennan keskeyttäminen nykyisen äänentasoviiveen äänentasohakuproseduurissa perustuen MSE-funktion neliölliseen ominaisuuteen. MSE-funktio, 5 MSE(L,b), lasketaan äänentasovahvistusarvoille, jotka kasvavat monotonisesti. Kun positiivinen MSE-arvo lasketaan nykyiselle äänentasoviiveelle, kaikki jäljellä olevat MSE-laskennat nykyiselle äänentasoviiveelle keskeytetään, koska kaikki jäljellä olevat MSE-arvot 10 olisivat samoin positiivisia.
Kolmanteen laskennan säästämismenetelmään kuuluu jäljellä olevien MSE-arvojen laskennan keskeyttäminen nykyisen äänentasoviiveen äänentasohakuproseduurissa pe-15 rustuen MSE-funktion neliölliseen ominaisuuteen. MSE-funktio, MSE(L,b), lasketaan äänentasovahvistusarvoille, jotka kasvavat monotonisesti. Kun nykyisessä ää-nentasoviiveessä laskettiin MSE-arvo, joka määritettiin uudeksi MSE-minimiksi, kaikki jäljellä olevat 20 MSE-laskennat nykyiselle äänentasoviiveelle keskeytetään, koska mikään jäljellä olevista MSE-arvoista ei voi olla pienempi kuin MSE-minimi. Kolme ylläkuvattua laskennan säästämismenetelmää aikaansaavat merkittäviä tehonsäästöjä minimointiprosessorissa 334.
25
Lohkossa 76 äänentasoarvot kvantisoidaan. Kullekin ää-nentasoalikehykselle valitut parametrit b ja L muunnetaan lähetyskoodeiksi PGAIN ja PLAG. Optimaalinen äänentasovahvistusindeksi on kokonaislukuarvo välillä 30 1 ja 8, sisältyen. Optimaalinen äänentasoviive L on kokonaislukuarvo välillä 1 ja 127, sisältyen.
Λ Λ A
PLAGin arvo riippuu sekä arvosta b että L. Jos b= 0, niin PLAG=0. Muutoin PLAG= L . Näin ollen PLAG esite-35 tään käyttämällä seitsemää bittiä. Jos b= 0, niin 56 PGAIN=0. Muutoin PGAIN=£ - 1. Näin ollen PGAIN esitetään käyttämällä kolmea bittiä. Huomaa, että sekä b= 0 että b=1 antaa PGAIN=0. Nämä kaksi tapausta erotetaan PLAGin arvolla, joka on nolla ensimmäisessä ja ei-5 nolla toisessa tapauksessa.
Kaikilla muilla paitsi kahdeksasosanopeudella kukin äänentasoalikehys käsittää kaksi koodikirja-alikehystä. Kullekin koodikirja-alikehykselle optimaa-10 linen koodikirjaindeksi i ja optimaalinen koodikirja-vahvistus G määritetään koodikirjahakuproseduurissa lohkossa 80. Kahdeksasosanopeudelle määritetään vain koodikirjaindeksi ja yksi koodikirjavahvistus ja koodikir jaindeksi poistetaan ennen lähetystä.
15 Viitaten kuvioon 9 esimerkkisovellutuksessa ärsykekoo-dikirja, joka annetaan koodikirjalla 400 sisältää 2M koodivektoria, missä M=7.
Esimerkkisovellutuksessa rengaskoodikirja koostuu 20 128:sta arvosta, jotka annetaan taulukossa IV alla.
Arvot merkitään desimaaleina ja talletetaan ROM E:een 114 .
Taulukko IV
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 TT ΓΤ -2.0 0 . 0 -1.5 0 . 0 0 . Q ^T“ TT 0 . 0 TTT 0.0 0.0 '^^T TT ^^T 0 . 0 25 n II16 117 18 19 120 | 21 22 23 1 24 1 25 26 27 28 29 1 30 1 31 TTT -1.5 -1.0 0.0 0.0 0.0 0.0 TT 0 . 0 0.0 0.0 0.0 0.0 0.0 ^^T 2.5 T” 3^” 33 34 35 36 37 38 40 41 42 43 44 45 47 TT TT 0 . 0 0 . 0 0 . 0 0 . 0 0 . 0 TT TT 0 . 0 TT 1 . 0 0 . 0 7T“ TT TT 0 . 0 T“ 49 50 51 52 53 TT” "5^“ 56 58 59 T^ 63 TT ÖT 0 . 0 0 . 0 0 . 0 0 . 0 0.0 0.0 "Ö^T 0 . 0 0.0 0.0 0.0 0.0 1.5 TT 0 . 0 TT“ 6^”" T” "TT” TT” TT” 69 70 T”” 73 74 75 76 T^“ "7T“
TrT TT 1.5 0.0 0.0 TT 0.0 1.5 ^^T 0 . 0 0.0 0.0 0.0 0.0 T^“ ^T" 0. 0 57 ΤΓ“|Τ80“"Τ8Ϊ“ "82““Γ^^“" 85 86 87 88 89 90 91 "9^“ 93 "9^“ "9^“ c (η) 0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0 "0ΰ^" ^Γ” η 1196 1 97 1 98 99 1 100 101 102 103 104 105 106 107 108 I 109 1110 1111 c (η) ~ “0"(Γ" 0.0 ΤΗΤΓ" “(ΰΤΓ" 0.0 0.0 0.0 0.0 1.5 ΤΤΓ" -1.5 ~2^ Ο . 0 ΤΤ" ΤΤ" η 11112 1 113 1 114 1 115 1 116 117 118 119 120 121 122 123 124 I 125 1 126 1 127 c (η) 0.0 7^^" 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 "0^Γ” "^Γ” 5 Koodikirjavektorin indeksin I ja koodikirjavahvistuk-sen G valinnassa käytettävä menetelmä on analyysi-synteesimenetelmä, joka vastaa äänentasohakuproseduu-rissa käytettävää. Valittu koodikirjaindeksi Ϊ ja valittu koodikirjavahvistus G ovat niiden sallitut ar-10 vot, jotka minimoivat yhtälön 50 neliöllisen keskivirheen MSE(I,G) painotetun syntetisoidun puheen yi(n) ja havainnollisesti painotetun puheen välillä äänen-tasoestimaatin, xc(n), ollessa poistettu. Viitaten kuvioon 9, painotettu puhe, xc(n), muodostetaan seuraa-15 vasti. Samaa äänentasohaussa nykyiselle alikehykselle havainnollisesti painottua puhetta x(n) käytetään tässä. Johtuen äänentasohaun puuttumisesta kahdeksasosa-nopeudella, x(n) generoidaan koodikirjahaussa tällä nopeudella. x(n) annetaan summaimen 410 ensimmäiseen 20 tuloon. Käyttäen optimaalista äänentasoviivettä L ja optimaalista äänentasovahvistusta b, jotka saatiin nykyisen alikehyksen äänentasohaussa ja äänentasosuodat-timen nykyisistä tilamuisteista 506, lasketaan äänen-tasosynteesisuodattimen 506 ZIR, pzir(n) ZIR-25 elementissä 406. ZIR siirretään painotetun syn- teesisuodattimen 408 kautta ja lähtö pazir(n) vähennetään x(n):stä summaimessa 410. Summaimen 410 lähtö, xc(n), normalisoidaan ja annetaan minimointi-prosessorille 412.
58
Koodikirjavektori Ci(n) annetaan koodikirjalla 400 vastauksena koodikirjaindeksiin I yhtälön 53 mukaisesti. Painotetun synteesisuodattimen 404 impulssivastet-5 ta h(n), joka on määritetty jo nykyisen äänentasoali-kehyksen äänentasohakuproseduurissa, käytetään esi-merkkisovellutuksessa. Kuitenkin kahdeksasosanopeudel-la h(n) lasketaan koodikirjahaussa painotetussa syn-teesisuodattimessa 404. Esimerkkisovellutuksessa im-10 pulssivaste h(n) typistetään ensimmäiseen 20:een näytteeseen .
Johtuen koodikirjan rekursiivisesta luonteesta, käytetään äänentasohaussa käytettyä proseduuria vastaavaa 15 rekursiivista konvoluutioproseduuria koodikirjahaussa. Konvoluutio lasketaan alla olevalla yhtälöllä 52 esitetyllä tavalla.
19 li(w) = Σ(n-i), 0 < I < 128, 0<n< Lc (52) i=0 20
Koodikirjaindeksi I, Ci(n) määritetään yhtälöllä 53 esitetyllä tavalla.
fc((«-/)modl28) n-I> 0 C,(n) = \ V , / 0< / < 128, 0<n< Lc (53) [ c(l28+ («-/)) n-I< 0 25 Täydellinen konvoluutio suoritetaan indeksille 1=0 yhtälön 54 mukaan. Lähtö yo (n) talletetaan RAM C:hen 182. Lopuille indekseille 1=1 - 1=127, konvoluutio suoritetaan rekursiivisesti, kuten esitetään yhtälöis-30 sä 55-57 alla.
19 59 y0(n) =h(n)*C0(n) = ^h(i)CQ(n-i), 0 <n<Lc (54) 1=0 /Kojeko) (55) y,(n)=< ^,.,(/1-1) + h(n)Cj(n) (56) ?/_ι(λ-1) (57) 5
Kuten äänentasohaussa, koodikirjahaun rekursiivisen konvoluution tehokkuutta optimoidaan kolmeen osaan jaetuilla RAM:eilla ja ROM E:llä 114 DSP-ytimessä 4.
10 Konvoluutioarvojen laskenta yhtälössä 56 ja tuloksen muodostaminen kussakin kellojaksossa on siten mahdollinen. Esimerkiksi yhdessä jaksossa lasketaan yis(lO), yi8 (9) talletetaan, yi7(10) haetaan ja h(10) haetaan. Näin yhtälö 56 yllä voi tuottaa tuloksen kussakin kel-15 lojaksossa. Tuloksen tuottaminen kussakin kellojaksossa yhtälölle 57 on myös mahdollista. Esimerkiksi yhdessä jaksossa y7g(24) lasketaan, y77(24) haetaan ja yi8(23) talletetaan.
20 Kyky suorittaa yhtälöt 56 ja 57 tarvitsematta siirtää painotettuja syntetisoituja puhenäytteitä yi-i(n-l) samaan lähde-RAM:iin kunkin koodikirjaindeksipäivityksen välillä, vaatii talletusstrategian ja laitteisto-ominaisuudet, joita pidetään ping-pongina, jossa läh-25 de- ja kohde-RAM:it vaihdetaan kunkin indeksipäivityk-sen välillä. Laskettaessa yi(n) arvoja parillisille koodikirjaindeksiarvoille, yi-i(n-l) arvot haetaan ensimmäisestä kolmesta RAM:sta ja tulokset talletetaan toiseen kolmesta RAM:sta. Laskettaessa yi(n) arvoja 30 parittomille koodikirjaindeksiarvoille, yi-i(n-l) arvot haetaan toisesta kolmesta RAM:sta ja tulokset talletetaan ensimmäiseen kolmesta RAM:sta. Tämä ping-pong eliminoi tarpeen siirtää aiemmin lasketut yi-i(n-l) ar- 60 vot samaan RAM:iin kunkin koodikirjaindeksipäivityksen välillä.
Kuvio 10 on vuokaavio rekursiivisen konvoluutio-5 osuuden suorittamisesta (sekä alkuperäiselle ei- rekursiiviselle että rekursiiviselle konvoluutiolle) esimerkkisovellutuksen koodikirjahaussa. Lohkossa 414 koodikirjaindeksi I alustetaan alimpaan arvoonsa, joka esimerkkisovellutuksessa on 0. Näytenumero n ja indek-10 si m asetetaan nollaksi ja arvot yo (n) asetetaan nollaksi. Lohkot 416 - 424 muodostavat alkukonvoluu-tiosilmukan, joka lasketaan ei-rekursiivisesti. Alku-konvoluution laskenta, jossa 1=0, suoritetaan alla olevan yhtälön 58 mukaisesti.
15 19 yo(n) = ^h(i)C0(n-i), 0 <n<Lc (58) i=0
Alkukonvoluution laskennassa käytetään kiinteänmittaisia silmukoita laskennallisen kompleksisuuden vähentä-20 miseksi. Tällä tavalla vältetään ylimenevä, joka vaaditaan vaihtuvamittaisen silmukkarakenteen muodostamiseksi yhtälön 58 sisemmässä silmukassa (lohkot 320-324). Kukin arvo yo (n) lähetetään minimointiprosesso-rille 412 laskennan jälkeen.
25
Lohko 416 testaa näyteindeksin n. Jos n vastaa koodikir ja-alikehyksen pituutta Lc, ensimmäinen konvoluutio on täydellinen ja edetään lohkoon 426. Jos lohkossa 416 n on pienempi kuin koodikirja-alikehyksen pituus, 30 edetään lohkoon 420. Lohko 420 testaa indeksin m. Jos m on yhtäsuuri kuin suodattimen impulssivasteen pituus, 20 esimerkkisovellutuksessa, iteraatio on suoritettu ja edetään lohkoon 418, jossa m asetetaan 0:aan 61 ja kasvatetaan n:ää. Seuraavaksi palataan lohkoon 416. Jos lohkossa 420 m on pienempi kuin impulssivasteen pituus, 20, edetään lohkoon 424, missä kerätään osittaiset summat. Edetään lohkoon 422, jossa kasvatetaan 5 indeksiä m ja edetään lohkoon 420.
Lohkoilla 414-424 muodostetun silmukan alkukonvoluuti-on liittyvät operaatiot suoritetaan DSP-ytimessä 4, jossa annetaan sopiva peräkkäinsuoritus tulojen kerää-10 miseksi, kuten esitetään lohkossa 424. Seuraavat operaatiot kuvaavat laskennan peräkkäinsuoritusta ja tapahtuvat DSP-ytimessä 4 yhden kellojakson aikana. Suodattimen vastearvo h(m+l) haetaan RAM A:sta 104 ja annetaan AREG:iin 130. Koodikirjavektoriarvo Ci(n) hae-15 taan ROM E:stä 114 ja annetaan BREG:iin 134. Osasumma y0(n+m-l), joka on C0REG:ssä 164 annetaan RAM C:hen 182 multiplekserien 168 ja 180 kautta. Osasumma yo(n+m+l) annetaan RAM C:llä 182 DREG:iin 156. Arvot h(m) ja Ci(n) AREGrssä 130 ja BREGrssä 134, vastaavas-20 ti, annetaan kertojaan 132. Kertojan 132 lähtö annetaan multiplekserin 138 ja estetyn ryhmösiirtimen 140 kautta summaimen 146 ensimmäiseen tuloon. Osasumma y0(n+m) annetaan DREG:llä 156 multiplekserin 154, estetyn invertterin 152 ja estetyn ryhmäsiirtimen 150 25 kautta summaimen 146 toiseen tuloon. Esimerkkisovellu-tuksessa keskileikattu Gaussin koodikirja Ci(n) sisältää nolla-arvojen enemmistön. Edun saamiseksi tästä tilanteesta ja tehon säästämiseksi, DSP-ydin 4 tarkastaa ensin onko koodikirjavektori nolla lohkossa 424.
30 Jos se on nolla, kerto- ja lisäysaskel, jotka normaalisti suoritetaan lohkossa 424 ja jotka selitettiin yllä, jätetään väliin. Tämä proseduuri eliminoi kertoja lisäysoperaatioita karkeasti ottaen 80% ajasta säästäen siten tehoa. Summaimen 146 lähtö annetaan 35 multiplekserin 148 kautta C0REG:iin 164. Tämä arvo C0REG:ssä sitten annetaan multiplekserien 168 ja 180 62 kautta RAM C:hen 182. Kun indeksi n saavuttaa suurimman sallitun arvonsa lohkossa 416, alkukonvoluutio on suoritettu ja RAM C:ssä 182 olevat osasummat ovat nyt konvoluution lopullinen tulos.
5
Kun alkukonvoluutio on suoritettu, edetään lohkoon 426, jossa suoritetaan rekursiivinen konvoluutio jäljellä olevien koodikirjaindeksiarvojen laskemiseksi.
10 Lohkossa 462 näyteindeksi n asetetaan nollaksi ja koodikir jaindeksi I:tä kasvatetaan. Edetään lohkoon 428. Lohko 428 testaa I:n. Jos I on suurempi tai yhtäsuuri kuin 128, joka on suurin koodikirjaindeksiarvo esi-merkkisovellutuksessa, edetään lohkoon 430, jossa koo-15 dikirjahakuoperaatio päättyy. Jos I on pienempi tai yhtäsuuri kuin 127, edetään lohkoon 432. Lohko 432 ohjaa edellä kuvattua ping-pong-operaatiota. Lohkossa 432 testataan I:tä sen parillisuuden tai parittomuuden määrittämiseksi. Jos I on parillinen, edetään lohkoon 20 442 (Tapauksena I kuvattu operaatio). Jos I on pari ton, edetään lohkoon 434 (Tapauksena II kuvattu operaatio) .
Tapaus I: (koodikirjaindeksin I parilliset arvot) 25
Lohkossa 442 yi(0) lasketaan yhtälön 55 mukaisesti. Osoiteyksikkö A 102 antaa osoitearvon RAM A:lle 104, joka vastauksena antaa h(0):n multiplekserin 108 kautta AREG:iin 130. Samassa kellojaksossa osoiteyksikkö E 30 112 antaa osoitearvon ROM E:lle 114, joka vastauksena antaa CjdO) multiplekserin 116 kautta BREG:iin 134. Seuraavan kellojakson aikana AREG 130 antaa h(0):n ja BREG antaa Cn;(0):n kertojalle 132, jossa kaksi arvoa kerrotaan ja tulo annetaan multiplekserin 138 estetyn 63 ryhmäsiirtimen 140 kautta summaimen 146 ensimmäiseen 146 tuloon. Summaimen 146 toiseen tuloon annetaan nolla multiplekserin 154, estetyn invertterielementin 152 ja ryhmäsiirtimen 152 kautta. Summaimen 146 lähtö an-5 netaan C0REG:iin 164 multiplekserin 148 kautta. Saman kellojakson aikana yi-i(0) ja h(l) haetaan RAM B:stä 122 ja RAM A:sta 104 ja annetaan DREG:iin 156 ja AREGriin 130 multiplekserien 158 ja 108 kautta, vastaavasti .
10
Lohkossa 444 syntetisoitua puhenäyteindeksiä n lisätään. Ohjauslohkossa 446, jos syntetisoitu puhenäy-teindeksi n on alle 20, niin edetään lohkoon 448.
15 Lohkossa 448 uusi yi(n):n arvo lasketaan kussakin kellojaksossa yhtälön 56 mukaan. Sopiva asetus, joka vaaditaan ennen lohkon 448 ensimmäistä iteraatiota arvojen y;[-i(n-l) ja h(n) alustamiseksi, saatiin lohkossa 442 yllä kuvatulla tavalla. Sopiva puhdistus vaaditaan 20 myös lohkon 448 viimeisen iteraation jälkeen lopullisen arvon yx(19) tallettamiseksi.
Lohkon 448 ensimmäisen iteraatio y;(0), joka on laskettu lohkossa 442, on läsnä COREGrssä 164. C0REG 164 25 antaa yi(0) :n multiplekserien 168 ja 180 kautta RAM C:hen 182 talletettavaksi yhdessä osoiteyksikkö C:n 186 RAM C:hen 182 antaman osoitearvon kanssa. yi(0) annetaan minimointiprosessorille 412 samalla kun se annetaan RAM C:hen 182.
30
Lohkossa 448 seuraavat operaatiot suoritetaan yhdessä kellojaksossa, yi-i(n) arvo annetaan RAM B:llä 122 osoiteyksikkö B:n 120 antaman osoitteen mukaisesti multiplekserien 116 ja 158 kautta DREG:iin 156. Im- 6 4 pulssivastearvo h(n+l) annetaan RAM A:11a 104 osoi-teyksikkö A:n 102 antaman osoitteen mukaisesti multiplekserin 108 kautta AREG:iin. DREG 156 antaa yI_1(n-l) multiplekserin 154, estetyn invertterielemen-5 tin 152 ja ryhmäsiirtimen 150 kautta summaimen 146 ensimmäiseen tuloon. AREG 130 antaa h(n):n ja BREG antaa Cn;(n):n kertojaan 132, jossa kaksi arvoa kerrotaan ja tulo annetaan kertojalla 132 multiplekserin 138 kautta, estetyn ryhmäsiirtimen 140 kautta, summaimen 146 10 toiseen tuloon. Summaimen 146 lähtö annetaan multiplekserin 148 kautta C0REG:iin 164. C0REG:n 164 arvo, joka on laskettu edellisessä iteraatiossa, annetaan multiplekserien 168 ja 180 kautta RAM C:hen 182 talletettavaksi ja minimointiprosessoriin 412.
15
Ohjauslohkossa 446, jos syntetisoidun puhenäytteen indeksi n on yhtäsuuri kuin 20, niin lasketaan y(19) viimeisessä iteraatiossa ja annetaan multiplekserien 168 ja 124 kautta RAM B:hen 122 talletettavaksi ren-20 gaspuskuriin ja minimointiprosessoriin 412 ennen etenemistä lohkoon 454.
Tapauksen I loppu 25 Tapaus II:(koodikirjaindeksin I parittomat arvot)
Lohkossa 434 yi(0) lasketaan yhtälön 55 mukaisesti. Osoiteyksikkö A 102 antaa osoitearvon RAM A:lie 104, joka vastauksena antaa h(0) multiplekserin 108 kautta 30 AREG:iin 130. Samassa kellojaksossa osoiteyksikkö E
112 antaa osoitearvon ROM E:hen 114, joka vastauksena antaa C^O) multiplekserin 116 kautta BREG:iin 134. Seuraavan kellojakson aikana AREG 130 antaa h(0):n ja BREG antaa Ci(0):n kertojalle 132, jossa kaksi arvoa 65 kerrotaan ja tulo annetaan multiplekserin 138 ja estetyn ryhmäsiirtimen 140 kautta summaimen 146 ensimmäiseen tuloon. Summaimen 146 toiseen tuloon annetaan nolla multiplekserin 154, estetyn invertterin 152 ja 5 ryhmäsiirtimen 152 kautta. Summaimen 146 lähtö annetaan C0REG:iin 164 multiplekserin 148 kautta. Saman kellojakson aikana yi-i(0) ja h(l) haetaan RAM C:stä 182 ja RAM A:sta 104 ja annetaan DREGriin 156 ja AREG:iin 130 multiplekserien 158 ja 100 kautta, vas-10 taavasti.
Lohkossa 436 syntetisoidun puhenäytteen indeksiä n lisätään. Ohjauslohkossa 438, jos syntetisoidun puhe-näytteen indeksi on alle 20 edetään lohkoon 440.
15
Lohkossa 440 uusi Yj{n):n arvo lasketaan kussakin kellojaksossa yhtälön 56 mukaan. Sopiva asetus, joka vaaditaan ennen lohkon 440 ensimmäistä iteraatiota arvojen y:_i(n) ja h(n) alustamiseksi, saatiin lohkossa 434 20 yllä kuvatulla tavalla. Sopiva puhdistus vaaditaan myös lohkon 440 viimeisen iteraation jälkeen lopullisen arvon yj(19) tallettamiseksi.
Lohkon 440 ensimmäisessä iteraatiossa yi(0), joka on 25 laskettu lohkossa 434, on läsnä C0REG:ssä 164. C0REG 164 antaa yj(0):n multiplekserien 168 ja 180 kautta RAM B:hen 122 talletettavaksi yhdessä osoiteyksikkö B:n 120 RAM B:hen 122 antaman osoitteen kanssa. yi(0) annetaan minimointiprosessorille 412 samalla kun se 30 annetaan RAM B:hen 122.
Lohkossa 440 seuraavat operaatiot suoritetaan yhdessä kellojaksossa. y^iCn) arvo annetaan RAM C:llä 182 osoiteyksikkö C:n 186 antaman osoitteen mukaisesti 66 multiplekserin 158 kautta DREG:iin 156. Impulssivaste h(n+l) annetaan RAM A:lla 104 osoiteyksikkö A:n 102 antaman osoitteen mukaisesti multiplekserin 108 kautta AREG:iin. DREG 156 antaa yI_i(n-l):n multiplekserin 5 154, estetyn invertterielementin 152 ja ryhmäsiirtimen 150 kautta summaimen 146 ensimmäiseen tuloon. AREG 130 antaa h(n):n ja BREG antaa Ci(n):n kertojaan 132, jossa kaksi arvoa kerrotaan ja tulo annetaan kertojalla 132 multiplekserin 138 ja ryhmäsiirtimen 140 kautta 10 summaimen 146 ensimmäiseen tuloon. Summaimen 146 lähtö annetaan multiplekserin 148 kautta C0REG:iin 164. C0REG:n 164 arvo, joka on laskettu edellisessä iteraa-tiossa, annetaan multiplekserien 168 ja 124 kautta RAM B:hen 122 talletettavaksi ja minimointiprosessoriin 15 412.
Lohkossa 436 syntetisoidun puheen näyteindeksiä n lisätään. Ohjauslohkossa 438, jos syntetisoidun puhe-näytteen indeksi n on yhtäsuuri kuin 20, viimeisessä 20 iteraatiossa laskettu yi(19) annetaan multiplekserien 168 ja 124 RAM B:hen 122 talletettavaksi rengaspusku-riin ja minimointiprosessoriin 412 ennen etenemistä lohkoon 454.
25 Tapauksen II loppu
Ennen lohkon 454 ensimmäistä iteraatiota y;[_i(19) haetaan rengaspuskurista RAM B:ssä 122 ja ladataan BREG:iin 134, seuraavaksi y:_i(19) siirretään 30 BREGrstä 134 COREGtiin 164, jonka jälkeen yI_1(20) haetaan rengaspuskurista RAM B:ssä 122 ja ladataan BREG:iin 134.
67
Lohkossa 454 lasketaan uusi yi(n) kussakin kellojaksossa yhtälön 57 mukaan. Seuraavat operaatiot suoritetaan yhdessä kellojaksossa. yi-i(n-2) annetaan BREG:llä 134 C0REG:iin 164. yn;_i(n-3) haetaan rengaspuskurista 5 RAM B:ssä 122 ja ladataan BREG:iin 134. C0REG:ssä oleva yn;_i(n-l) esitetään minimointiprosessorille 412. Lohkon 454 viimeisen iteroinnin jälkeen, yI_i(Lc-2) poistetaan rengaspuskurista RAM B:ssä 122. Lisäämällä elementti rengaspuskurin kuhunkin äänentasoviiveeseen 10 ja poistamalla elementti rengaspuskurin kustakin ää-nentasoviiveestä, pidetään rengaspuskurin kokona Lc- 19.
Rengaspuskurin toteutus RAM B:ssä 122 saadaan erityisiä ten osoiterekisterien kautta osoiteyksikössä B 120, joka määrää ympärikiertopisteet niin, että sekventiaa-lista muistia voidaan osoittaa automaattisesti rengasmaisella tavalla.
20 Lohkossa 450, syntetisoidun puhenäytteen indeksiä n lisätään. Ohjauslohkossa 452, jos syntetisoidun puhe-näytteen indeksi n on pienempi kuin Lc, edetään uudelleen lohkoon 454. Jos syntetisoidun puhenäytteen indeksi n on yhtäsuuri kuin Lc, niin senhetkiselle koo-25 dikirjaindeksille L on laskettu kaikki yz(n) arvot ja palataan lohkoon 426.
Ennen syntetisoitujen puhenäytteiden yz(n) laskentaa, Lc:n mittainen sekvenssi havainnollisesti syntetisoi-30 tuja puhenäytteitä xc(n) annetaan minimointiprosessorille 412. Kuten aikaisemmin esitettiin, syntetisoitujen puhenäytteiden yz(n) Lc:n mittaiset sekvenssit koo-dikirjaindeksiarvoille 1=0 - 1=127 annetaan minimointiprosessorille 412 alku- ja rekursiivisten konvoluu-35 tiolaskentojen aikana. Syntetisoidut puhenäytteet an- 68 netaan jaksottain minimointiprosessorille 412. Mini-mointiprosessori 412 laskee kunkin syntetisoitujen pu-henäytteiden yi(n) sekvenssin autokorrelaation ja ris-tikorrelaation kunkin syntetisoitujen puhenäytteiden 5 yi(n) sekvenssin ja havainnollisesti painotettujen puhenäytteiden xc(n) sekvenssin välillä. Näistä korre-laatioarvoista minimointiprosessori 412 laskee MSE:n suhteellisen arvon kaikkien syntetisoitujen puhenäytteiden yi(n) sekvenssin ja havainnollisesti painotet-10 tujen puhenäytteiden xc(n) sekvenssin välillä. Kullekin koodikirjavektori-indeksille I, lasketaan MSE syntetisoitujen puhenäytteiden yL(n) sekvenssin kaikille mahdollisille koodikirjavahvistusarvoille G. Minimoin-tiprosessori 412 löytää MSE-minimin kaikkien yli ja 15 kaikkien mahdollisten koodikirjavahvistusarvojen G yli ylläpitämällä MSE-minimiä nykyisen koodikirjavektori-indeksiarvon I ja koodikirjavahvistusarvon G kautta. Koodikirjavektori-indeksiestimaatti I ja koodikirja-vahvistusindeksiestimaatti G vastaten MSE-minimiä yl-20 läpidetään myös minimointiprosessorilla 412. Jokaista uutta MSE-arvoa verrataan minimointiprosessorilla 412 ylläpidettyyn MSE-arvoon. Jos uusi MSE-arvo on pienempi kuin minimi-MSE, minimi-MSE korvataan uudella MSE:llä ja koodikirjavektori-indeksiestimaatti Ϊ ja 25 koodikirjavahvistusestimaatti-indeksi G päivitetään vastaamaan uutta MSE-minimiä. MSE-minimi ja vastaava koodikirjavektori-indeksiestimaatti Ϊ ja koodikirja-vahvistusestimaatti-indeksi, G, joita ylläpidetään minimointiprosessorissa 412 alustetaan kussakin koodi-30 kirjakehyksessä käyttäen ensimmäistä MSE-arvoa, joka on laskettu koodikirja-alikehyksen aikana. Kaikkien koodikirjavektori-indeksien, I, ja koodikirjavahvis-tusarvojen G käyttämisen jälkeen, koodikirjavektori-indeksiestimaatti Ϊ ja koodikirjavahvistusestimaatti-35 indeksi, G, ovat optimaalinen koodikirjavektori-ineksi ja optimaalinen koodikirjavahvistusindeksi, vastaavasti, senhetkiselle koodikirja-alikehykselle.
69
Minimointiprosessori 412 antaa optimaalisen koodikir-javektori-indeksin Ϊ ja optimaalisen koodikirjavahvis-tusestimaatti-ineksin G DSP-ytimeen 4 tuloporttien 12 kautta. Optimaalinen koodikirjavektori-indeksi I ja 5 optimaalinen koodikirjavahvistusestimaatti-indeksi G ovat ne, jotka johtavat minimi-MSE:hen havainnollisesti painotettujen puhenäytteiden xc(n) ja painotettujen syntetisoitujen puhenäytteiden yi(n) välillä. MSE on koodikirjaindeksin I ja koodikirjavahvistuksen G funk-10 tio, kuten alla yhtälöissä 59 - 61 kuvataan:
Lc-1 2 MSE{I,G)=Yj(xc{n)-GyI(n)) (59) n=0 = Ϋ^{χε(η))2 -2G^(xc(w)y,.(w)) + G2 ^(läO))2 (60) k=0 n=0 w=0 = Excxc -2GExcyj + G2Eylyl (61) 15
Excxc on havainnollisesti painotettujen puhenäytteiden xc(n) autokorrelaatio. Excy;[ on havainnollisesti painotettujen puhenäytteiden xc(n) ja painotettujen syntetisoitujen puhenäytteiden yi(n) välinen ristikorrelaa-20 tio. Eyzy! on painotettujen syntetisoitujen puhenäytteiden yi(n) autokorrelaatio.
Havainnollisesti painotettujen puhenäytteiden xc(n) autokorrelaatio Excxc ei ole koodikirjavahvistuksen G 25 funktio. Excxc pysyy vakiona kunkin koodikirja- alikehyksen aikana ja siksi ei vaikuta optimaalisen koodikirjavektori-indeksin ja optimaalisen koodikirja-vahvistuksen valintaan. Yhtälöiden 59 - 61 minimointi koodikirjavektori-indeksin I ja koodikirjavahvistuksen 30 G suhteen on vastaava kuin allaolevan yhtälön 62 minimointi .
70 MSE(I,G) = -2GExcy,+G2Eyiyi (62)
Minimointiprosessori 412 laskee painotettujen syntetisoitujen puhenäytesekvenssien yi(n) autokorrelaatiot 5 Eyjyj ja havainnollisesti painotetun puhenäytesekvens-sin xc(n) ja painotettujen syntetisoitujen puhenäytesekvenssien yi(n) väliset ristikorrelaatiot Excyi. Kullekin korrelaatioparille (Ex^, Ey^) minimointi-prosessori 412 laskee suhteellisen MSE:n ylläolevan 10 yhtälön 62 mukaan joukolle koodikirjavahvistusarvoja G. Korrelaatioiden Ex^, ja Ey^ laskenta suoritetaan samanaikaisesti minimointiprosessorissa 412. Suhteelliset MSE-arvot lasketaan ja päätökset liittyen MSE-minimointiin tehdään koodikirjavektori-indeksille I, 15 kun taas korrelaatioarvot lasketaan koodikirjavektori-indeksille I + 1 .
Kuviot 6a ja 6b esittävät minimointiprosessorin 412 esimerkkisovellutusta. Havainnollisesti painotetut pu-20 henäytteet xc(n) annetaan DSP-ytimellä 4 lukkopiiriin 210 talletettavaksi RAM X:ään 212 ohjauksen 220 antaman osoitteen mukaisesti. Kaksi koodikirjavahvistusar-vojoukkoa annetaan DSP-ytimellä 4 minimointiprosesso-riin 412. Yksi joukko on positiivisille koodikirjavah-25 vistusarvoille G ja toinen joukko on negatiivisille koodikirjavahvistusarvoille -G. Täydellä nopeudella ja puolinopeudella skaalatut koodikirjavahvistusarvot -2G arvoille G=-4dB - G=+8dB +4db:n askelein annetaan DSP-ytimellä 4 multiplekserin 260 kautta talletettaviksi 30 lukkopiireihin 292, 288, 284 ja 280, vastaavasti. Nel-jäsosanopeudella ja kahdeksasosanopeudella skaalatut koodikirjavahvistusarvot -2G arvoille G=-4.0dB -G=+2.OdB +2dB:n askelein annetaan DSP-ytimellä 4 multiplekserin 260 kautta talletettaviksi lukkopiireihin 35 292, 288, 284 ja 280, vastaavasti. Vastaavat skaalatut 71 koodikirjavahvistusarvot G2 annetaan multiplekserin 260 kautta talletettaviksi lukkopiireihin 290, 286, 282 ja 278, vastaavasti. Täydellä nopeudella ja puoli-nopeudella, skaalatut koodikirjavahvistusarvot 2G ar-5 voille G=-4.0dB - G=+8.0dB +4.0db:n askelein annetaan multiplekserin 260 kautta talletettaviksi lukkopiireihin 276, 272, 268 ja 264, vastaavasti. Neljäsosanopeu-della ja kahdeksasosanopeudella, skaalatut koodikirja-vahvistusarvot 2G arvoille G=-4.0dB - G=+2.OdB +2dB:n 10 askelein annetaan multiplekserin 260 kautta talletettaviksi lukkopiireihin 276, 272, 268 ja 264, vastaavasti. Vastaavat skaalatut koodikirjavahvistusarvot G2 annetaan multiplekserin 260 kautta talletettaviksi lukkopiireihin 274, 270, 266 ja 262, vastaavasti. Mul-15 tiplekseri 260 antaa arvot suoraan lukkopiiriin 262.
Lukkopiiri 262 antaa arvot suoraan lukkopiiriin 264.
Lukkopiiri 276 antaa arvot lukkopiiriin 278 multiplekserin 294 kautta. Lukkopiiri 290 antaa arvot suoraan lukkopiiriin 292 ja niin edelleen. Arvojen siirtäminen 20 lukkopiirien 262 - 292 ja multiplekserin 294 kautta mahdollistaa arvojen antamisen multiplekserin 260 kautta kaikkiin lukkopiireihin rengaspuskurissa 259. Koodikirjahaussa järjestetään kaksi rengaspuskuria rengaspuskuriin 259. Havainnollisesti painotettujen 25 puhenäytteiden xc(n) tallentamisen ja koodikirjavah- vistusarvojen tallentamisen jälkeen annetaan painotettujen syntetisoitujen puhenäytteiden yi(n) sekvenssit lukkopiiriin 210. Painotetut syntetisoidut puhenäyt-teet yi(n) annetaan lukkopiirillä 210 kertojan 216 30 kahteen tuloon, joka tuottaa painotettujen syntetisoitujen puhenäytteiden toisen potenssit (y^n))2. Lisäksi lukkopiiri 210 antaa painotetut syntetisoidut puhe-näytteet yi(n) kertojan 218 ensimmäiseen tuloon. RAM X 212 antaa havainnollisesti painotetut puhenäytteet 35 xc(n) lukkopiirin 214 kautta kertojan 218 toiseen tuloon. Kertoja 218 laskee tuloarvot xc(n)yi(n). Uusi toisen potenssi (y^n))2 ja uusi tulo xc(n)yi(n) laske- 72 taan jokaisessa jaksossa kertojilla 216 ja 218, vastaavasti. Näyteindeksi n vaihtelee 0:sta Lc-l:een kullakin koodikirjavektori-indeksillä I.
5 Painotettujen syntetisoitujen puhenäytteiden toiset potenssit (y^n))2 annetaan kerääjään 221. Tuloarvot xc(n)yn;(n) annetaan kerääjään 231. Kerääjä 221 laskee Lc-neliöiden summat kullekin koodikirjavektori-indeksille I. Kerääjä 231 laskee Lc-tuloarvojen summat 10 kullekin koodikirjavektori-indeksille I.
Ennen jokaista uutta koodikirjavektori-indeksiä, luk-kopiiriin 226 annetaan nolla multiplekserin 224 kautta. Seuraavaksi kerääjä 221 on valmis laskemaan auto-15 korrelaation Ey;^ nykyiselle koodikirjavektori- indeksille I. Kerääjässä 221 neliöt (yi(n))2 annetaan summaimen 222 ensimmäiseen tuloon. Kokonaisajo annetaan lukkopiirillä 226 summaimen 222 toiseen tuloon. Uutena laskettu kokonaisajo annetaan summaimella 222 20 multiplekserin 224 kautta lukkopiiriin 226 talletettavaksi. Kaikkien koodikirjavektori-indeksi I:n Lc-arvojen keräämisen jälkeen annetaan autokorrelaatio Eyiyi lukkopiiriin 228 tallettamista varten.
25 Ennen kutakin uutta koodikirjavektori-indeksiä lukko-piiriin 236 annetaan nolla multiplekserin 234 kautta. Seuraavaksi kerääjä 231 on valmis laskemaan ristikor-relaation Excy! nykyiselle koodikirjavektori-indeksille I. Kerääjässä 231 tuloarvot xc(n)yi(n) annetaan summai-30 men 232 ensimmäiseen tuloon. Ajonaikainen kokonaissumma annetaan lukkopiirillä 236 summaimen 232 toiseen tuloon. Uutena laskettu kokonaisajo annetaan summaimella 232 multiplekserin 234 kautta lukkopiiriin 236 tallennusta varten. Kaikkien koodikirjavektori-35 indeksi I:n Lc-arvojen keräämisen jälkeen annetaan 73 ristikorrelaatίο Εχ0γζ lukkopiiriin 238 tallettamista varten.
Yhtälöllä 62 kuvattu MSE lasketaan seuraavaksi kahdes-5 sa jaksoprosessissa allakuvatulla tavalla.
Ensimmäisessä kahdesta jaksosta lukkopiiri 238 antaa havainnollisesti painotettujen puhenäytteiden ja painotettujen syntetisoitujen puhenäytteiden välisen ris-tikorrelaation Excy! multiplekserin 230 kautta kertojan 10 240 ensimmäiseen tuloon. Ohjaus 220 seuraa lukkopiirin 238 antamaa Excy;[:tä. Jos Excy;[ on ei-negatiiviinen, niin lukkopiiri 292 antaa skaalatun koodikirjavahvis-tusarvon -2G kertojan 240 toiseen tuloon multiplekserin 296 kautta. Tulo -2GExcy! annetaan kertojalla 240 15 summaimen 242 ensimmäiseen tuloon. Jos Εχ0γζ on negatiivinen, niin lukkopiiri 276 antaa skaalatun koodikir javahvistusarvon 2G kertojan 240 toiseen tuloon multiplekserin 296 kautta. Tulo 2GExcy;[ annetaan kertojalla 240 summaimen 242 ensimmäiseen tuloon. Summaimen 20 242 toiseen tuloon annetaan nolla multiplekserin 246 kautta. Summaimen 242 lähtö annetaan lukkopiiriin 244 tallettamista varten. Excypn merkki talletetaan ohjauksessa 220. Ykkösen ja nollan merkit Ex^rlle vastaavat Ex^m negatiivisia ja positiivisia arvoja vastaa-25 vasti. Arvot lukkopiireissä 262 - 276 kierretään antamalla lukkopiirin 276 lähtö lukkopiiriin 262 multiplekserin 260 kautta. Tämän kierron jälkeen lukkopii-rit 262, 264, 266, 268, 270, 272, 274 ja 276 sisältävät arvot, jotka aiemmin olivat lukkopiireissä 276, 30 262, 264, 266, 268, 270, 272 ja 274, vastaavasti. Ar vot lukkopiireissä 278-292 kierretään antamalla lukko-piirin 292 lähtö lukkopiiriin 278 multiplekserin 294 kautta. Tämän kierron jälkeen lukkopiirit 278, 280, 282, 284, 286, 288, 290 ja 290 sisältävät arvot, jotka 35 aikaisemmin sisältyivät lukkopiireihin 292, 278, 280, 282, 284, 286, 288 ja 290 vastaavasti. Yksi rengaspus- 74 kuri koostuu lukkopiireistä 262 - 276 ja multiplekse-ristä 260. Toinen rengaspuskuri koostuu rekistereistä 276 - 292 ja multiplekseristä 294. Kiertämällä arvot rengaspuskurin 259 ensimmäisessä kahdesta puskurista, 5 lukkopiiri 292 antaa -2G:n ja G2:n ensimmäisessä ja toisessa jaksossa, vastaavasti. Kiertämällä arvot rengaspuskurin 259 toisessa kahdesta puskurista, lukko-piiri 276 antaa 2G:n ja G2:n ensimmäisessä ja toisessa jaksossa vastaavasti. Kullekin korrelaatio- ja risti-10 korrelaatioarvoparille, annetaan vain yksi joukko koo-dikirjavahvistuspareja rengaspuskurilla 259. Joukko koodikirjavahvistuspareja annetaan rengaspuskurilla käsittäen lukkopiirit 262 - 276 ja multiplekserin 260 Excypn negatiivisille arvoille. Joukko koodikirjavah-15 vistuspareja annetaan rengaspuskurilla koostettuna lukkopiireillä 278 - 292 ja multiplekserillä 294 Ex-cYiin ei-negatiivisille arvoille.
Toisessa kahdesta jaksosta lukkopiiri 228 antaa EyIyI:n 20 multiplekserin 230 kautta kertojan 240 ensimmäiseen tuloon. Multiplekserin 296 kautta lukkopiirit 276 -292 antavat koodikirjavahvistusarvon G2 kertojan 240 toiseen tuloon Excyn;:n negatiivisille ja ei-negatiiviselle arvoille, vastaavasti. Tulo G^x^ an-25 netaan kertojalla 240 summaimen 242 ensimmäiseen tuloon. Summaimen 242 toiseen tuloon annetaan lukkopii-rin 244 lähtö ±26Εχ0γ! multiplekserin 246 kautta. Sum-main 242 antaa ±2GExcyI+G2EyIyI lukkopiiriin 244 tallettamista varten. Arvot rengaspuskurin 259 lukkopiireis-30 sä 262 - 292 sitten kierretään ylläkuvatulla tavalla.
Kaksi ylläkuvattua jaksoprosessia toistetaan kaikille neljälle koodikirjavahvistusarvojen parille (± 2G, G2) jokaiselle koodikirjaindeksille I. Nykyisen MSE-arvon 35 2GExcy! + G2Excy! laskentaa seuraavan kahden jakson ai- 75 kana lasketaan uusi MSE-arvo käyttämällä arvojen ±2G ja G2 seuraavaa paria. Ennen lukkopiirin 244 päivittämistä uudella MSE-arvolla, nykyistä MSE-arvoa verrataan minimi-MSE:hen nykyistä koodikirja-alikehystä 5 varten, joka on tallennettu lukkopiiriin 250. Nykyinen MSE-arvo ±2Excy! + G^Ex^ annetaan lukkopiirillä 244 vähentäjän 248 positiiviseen tuloon. Lukkopiiri 250 antaa senhetkisen minimin MSE-arvon vähentäjän 248 negatiiviseen tuloon. Ohjaus 220 seuraa erotuksen tulos-10 ta vähentäjältä 248. Jos ero on negatiivinen, nykyinen MSE-arvo on uusi MSE-minimi nykyiselle koodikirja-alikehykselle ja talletetaan lukkopiiriin 250 ja vastaava koodikirjavektori-indeksiestimaatti Ϊ sekä koodikir javahvistusestimaatti-indeksi G päivitetään oh-15 jauksessa 220. Jos ero on ei-negatiivinen, nykyinen MSE-arvo jätetään huomiotta.
Ennen kutakin koodikirja-alikehystä, DSP-ydin 4 antaa komennon minimointiprosessorille 412 ilmoittaen ohja-20 ukselle 220, että uusi äänentasoalikehys on tulossa. Tämän komennon vastaanoton yhteydessä nykyinen koodikir j avektor i-indeksi ja nykyinen koodikirjavahvis-tusindeksi asetetaan 0:ksi ohjauksessa 220. Ennen kunkin uuden painotettujen syntetisoitujen puhenäytteiden 25 sekvenssin puhenäytteiden antamista minimointiproses-sorille 412, DSP-ydin antaa komennon minimointiproses-sorille 412 ilmoittaen ohjaukselle 220, että uusi painotettujen syntetisoitujen puhenäytteiden sekvenssi on tulossa. Tämän komennon vastaanoton yhteydessä nykyi-30 nen koodikirjavektori-indeksi ja nykyinen koodikirja-vahvistusindeksi kasvatetaan l:llä ohjauksessa 220 vastaten koodikirjavektori-indeksin lisäystä 1 ja koodikir j avahvistuksen lisäystä 2 dB tai 4 dB riippuen nopeudesta. Kun painotettujen syntetisoitujen puhe-35 näytteiden ensimmäinen sekvenssi annetaan minimointi-prosessorille 412, nykyinen koodikirjavektori-indeksi 76 ja nykyinen koodikirjavahvistusindeksi vastaavat 1:stä vastaten koodikirjavektori-indeksiä ja koodikirjavah-vistusta G=-8 dB tai G=-4 dB riippuen nopeudesta. Kunkin koodikirja-alikehyksen aikana ensimmäinen MSE-arvo 5 talletetaan lukkopiiriin 250 ja vastaava koodikirja-vektori-indeksiestimaatti I ja vastaava koodikirjavah-vistusestimaatti-indeksi G päivitetään ohjauksessa 220. Tämä tehdään MSE-minimin alustamiseksi lukkopii-rissä 250 kullakin koodikirja-alikehyksellä. MSE-10 minimiestimaatteja vastaavat koodikirjavektori-indeksi ja koodikirjavahvistusindeksi annetaan ohjauksella 220 DSP-ytimeen 4 yhdessä ristikorrelaation, ExcyIf merkin kanssa vastaten MSE-minimiä. DSP-ytimen 4 vastaanottaessa nollan Ex^rn merkiksi, se asettaa optimaalisen 15 koodikirjavahvistuksen G:ksi. DSP-ytimen 4 vastaanottaessa ykkösen Ex^tn merkiksi, se asettaa optimaalisen koodikirjavahvistuksen -G:ksi. DSP-ydin 4 käyttää ohjauksen 220 antamaa koodikirjavektori-indeksiesti-maattia ja koodikirjavahvistusestimaatti-indeksiä op-20 timaalisen koodikirjavektorin ja optimaalisen koodikir j avahvistuksen määrittämiseksi. Täydellä nopeudella ja puolinopeudella optimaalinen koodikirjavahvistus G on -4 dB, 0 dB, +4 dB ja +8 dB koodikirjavahvistusin-dekseille välillä G=1 - G=4, vastaavasti. Neljäsosa-25 nopeudella ja kahdeksasosanopeudella optimaalinen koodikir j avahvistus G on -4 dB, -2 dB, 0 dB ja +2 dB koo- A Λ dikirjavahvistusindekseille välillä G=1 - G=4, vastaavasti .
30 Koodikirjahaussa yhtälön 62 MSE-funktion, MSE(I,G), luonne mahdollistaa laskennallisten säästöjen aikaansaamisen. Nykyisen koodikirjavektorin jäljelle jäävät laskennat voidaan keskeyttää, kun on määritetty, että jäljelle jäävät MSE-arvot, jotka vielä on laskematta 35 nykyiselle koodikirjavektorille, eivät voi johtaa MSE-arvoon, joka on pienempi kuin lukkopiiriin 250 talle- 77 tettu nykyinen MSE-minimi. Esimerkkisovellutuksessa minimointiprosessorissa 412 käytetään kolmea tekniikkaa laskennan säästämiseksi koodikirjahaussa. MSE-funktiot MSE(I,G) ovat neliöllisiä G:ssä. Yksi neliöl-5 linen yhtälö muodostetaan kutakin koodikirjavektori-indeksiä I varten. Kaikki nämä neliölliset yhtälöt kulkevat origon kautta, G=0 ja MSE(I,G)=0.
Ensimmäiseen laskennan säästämismenetelmään kuuluu jo-10 ko positiivisten tai negatiivisten koodikirja-arvojen haku riippuen EXcy^n merkistä. Negatiivinen Excyn;:n arvo ja negatiivinen vahvistusarvo johtavat termin -2GExcyI:n negatiiviseen arvoon yhtälössä 62. Positiivinen Excyn;:n arvo ja positiivinen vahvistusarvo myös 15 johtavat termin -2GExcy;[:n negatiiviseen arvoon yhtälössä 62. Koska termi G^y^ yhtälössä 62 on aina positiivinen, termin -2GExcy;[:n negatiivinen arvo yleensä minimoi MSE:n. Rengaspuskuriin 259 annetaan kaksi joukkoa koodikirjavahvistuspareja, toinen positiivisin 20 koodikirjavahvistusarvoin ja toinen negatiivisin koo dikir javahvistusarvoin. Tällä tavoin joudutaan käyttämään ainoastaan neljää paria vahvistusarvoja kahdeksan vahvistusparin sijaan kullekin koodikirjavektori-indeksille I.
25
Toiseen laskennan säästämismenetelmään kuuluu jäljellä olevien MSE-arvojen laskennan keskeyttäminen nykyisen koodikirjavektorin koodikirjahakuproseduurissa perustuen MSE-funktion neliölliseen ominaisuuteen. MSE-30 funktio MSE(I,G) lasketaan koodikirjavahvistusarvoil-le, jotka kasvavat monotonisesti. Kun positiivinen MSE-arvo lasketaan nykyiselle koodikirjavektorille, kaikki jäljellä olevat MSE-laskennat nykyiselle koodikir javektorille keskeytetään, koska vastaavat MSE-35 arvot ovat suurempia kuin nykyinen MSE-arvo.
78
Kolmanteen laskennan säästämismenetelmään kuuluu jäljellä olevien MSE-arvojen laskennan keskeyttäminen nykyisen koodikirjaindeksivektorin koodikirjahakuprose-5 duurissa perustuen MSE-funktion neliölliseen ominaisuuteen. MSE-funktio MSE(I,G) lasketaan koodikirjavah-vistusarvoille, jotka kasvavat monotonisesti. Kun nykyisessä koodikirjavektorissa lasketaan MSE-arvo, jota ei määritetty uudeksi MSE-minimiksi, ja kun nykyisessä 10 koodikirjavektorissa laskettiin MSE-arvo, joka määritettiin uudeksi MSE-minimiksi, kaikki jäljellä olevat MSE-laskennat nykyisessä koodikirjavektorissa keskeytetään, koska jäljellä olevat MSE-arvot eivät voi olla pienempiä kuin uusi MSE-minimi. Kolme ylläkuvattua 15 laskennan säästämismenetelmää aikaansaavat merkittäviä tehonsäästöjä minimointiprosessorissa 412.
Lohkossa 84 koodikirja-arvot kvantisoidaan. Lohko 86 tarkistaa onko kaikki koodikirja-alikehykset käsitel-20 ty. Jos kaikkia koodikirja-alikehyksiä ei ole käsitelty, niin palataan lohkoon 80. Jos kaikki koodikirja-alikehykset on käsitelty, niin edetään lohkoon 88. Lohko 88 tarkistaa onko kaikki äänentasoalikehykset käsitelty. Jos kaikkia äänentasoalikehyksiä ei ole kä-25 sitelty, niin palataan lohkoon 70. Jos kaikki äänentasoalikehykset on käsitelty, niin edetään lohkoon 90.
Lohkossa 90 koodatut tulokset pakataan tiettyyn muotoon. Täydellä nopeudella 22 bittiä dataa luetaan mik-30 roprosessorilla (ei esitetty). Puolella nopeudella luetaan 10 tavua, 5 neljännesnopeudella ja 2 kahdek-sasosanopeudella. Täydellä nopeudella generoidaan 11 pariteetin tarkistusbittiä virheenkorjauksen ja tunnistuksen aikaansaamiseksi täyden nopeuden 18:lie tär-35 keimmälle bitille.
79
Kooderin, lähettimessä, on ylläpidettävä dekooderin tilaa, vastaanottimessa, suodatinmuistien päivittämiseksi, joita vuorostaan käytetään kooderissa äänentaso- ja koodikirjahakuproseduureissa. Esimerkkisovellu-5 tuksessa kooderiin kuuluu dekooderiversio, jota käytetään kunkin koodikirja-alikehyksen jälkeen.
Seuraavat dekoodausoperaatiot suoritetaan DSP-ytimessa 4 kooderin osana. Viitaten kuvioon 11, nykyiselle koo-10 dikirja-alikehykselle määritettyjä optimaalista koodikir javektori-indeksiä I ja optimaalista koodikirjavah-vistusta G, käytetään skaalatun koodikirjavektorin Cd(n) generoimiseksi. Kaikilla muilla paitsi kahdek-sasosanopeudella nykyiselle koodikirja-alikehykselle 15 määritetty koodikirja 502 annetaan optimaalisen koodikir jaindeksin, Ϊ, kanssa ja vastauksena annetaan vastaava herätevektori kertojan 504 ensimmäiseen tuloon. Kahdeksasosanopeuden tapauksessa generoidaan näennäis-satunnainen sekvenssi Cd(n):ää varten näennäissatun-20 naisvektorigeneraattorilla 500 ja annetaan kertojan 504 ensimmäiseen tuloon. Optimaalinen koodikirjavah-vistus G, joka on määritetty nykyiselle koodikirja-alikehykselle annetaan kertojan 504 toiseen tuloon. Tämä sekvenssi generoidaan samalla näennäissatunnais-25 generointioperaatiolla kuin mitä käytetään vastaanottimen dekooderissa.
Skaalatut koodikirjavektorit Cd(n) annetaan äänentaso-synteesisuodattimeen 506, joka generoi formanttijään-30 nöksen Pd(n). Äänentasosynteesisuodatinmuistit alustetaan lopputilalla, joka saadaan viimeisestä generoidusta puhenäytteestä. Äänentasosynteesisuodatin 506 käyttää optimaalista äänentasoviivettä L ja optimaalista äänentasovahvistusta b, jotka on määritetty ny-35 kyiselle äänentasoalikehykselle. Kahdeksasosanopeudel- 80 le optimaalinen äänentasovahvistus asetetaan 0:ksi. Äänentasosynteesisuodatinmuistien lopputila ylläpidetään puheen generoimiseksi seuraavaa äänentasoalike-hystä varten, kuten yllä mainittiin, käytettäväksi pe-5 räkkäisissä äänentasohauissa ja dekoodausoperaatioissa kooderissa.
Painotettu formanttisynteesisuodatin 508 generoi lähdön Yd(n) formanttijäännöksestä Pd(n). Tämä suodatin 10 alustetaan lopputilalla, joka saadaan viimeisestä generoidusta puhenäytteestä. LPC-vakiot, jotka on laskettu interpoloiduista LSP-arvoista nykyiselle alike-hykselle, käytetään tämän suodattimen kertoimina. Tämän suodattimen lopputila talletetaan puheen generoin-15 tia varten seuraavalle koodikirja-alikehykselle ja käytettäväksi seuraavissa äänentaso- ja koodikirja-hauissa .
Dekoodausoperaatio, joka näytetään lohkoilla 44 ja 50 20 kuviossa 2, suoritetaan DSP-ytimessä 4. ASIC vastaanottaa paketin tietyssä muodossa mikroprosessorilta (ei esitetty) mikroprosessorirajapinnan 42 kautta. DSP-ydin 4 dekoodaa datan tässä paketissa ja käyttää sitä syntetisoimaan puhenäytteet, jotka annetaan koodekkiin 25 (ei esitetty) PCM-rajapinnan 2 kautta. DSP-ytimessä vastaanotettu paketti puretaan puhenäytteiden synteti-soimiseen tarvittavan datan saamiseksi. Data sisältää koodausnopeuden, LSP-taajuudet ja äänentaso- ja koodikir j aparametrit vastaaville alikehyksille tällä nopeu-30 della. Puhenäytteiden synteesi vastaanotetusta pakettidatasta suoritetaan DSP-ytimessä 4 ja esitetään kuviossa 12.
Viitaten kuvioon 12 optimaalinen koodikirjavektori-35 indeksi Ϊ ja optimaalinen koodikirjavahvistus G vas- 81 täten nykyistä koodikirja-alikehystä ovat käytössä de-kooderissa skaalattujen koodikirjavektorien Cd(n) generoimiseksi. Paitsi kahdeksasosanopeudella, koodikirja 522 annetaan yhdessä nykyistä koodikirja-alikehystä 5 vastaavan optimaalisen koodikirja-indeksin Ϊ kanssa ja vastauksena annetaan vastaava herätevektori kertojan 524 ensimmäiseen tuloon. Kahdeksasosanopeuden tapauksessa näennäissatunnainen sekvenssi Cd(n):lle generoidaan näennäissatunnaisvektorigeneraattorilla 520 ja 10 annetaan kertojan 524 ensimmäiseen tuloon. Tämä sekvenssi generoidaan samalla näennäissatunnaisgeneroin-tioperaatiolla kuin mitä käytetään vastaanottimen de-kooderissa. Optimaalinen koodikirjavahvistusarvo G vastaten nykyistä koodikirja-alikehystä annetaan ker-15 tojan 524 toiseen tuloon.
Skaalatut koodikirjavektorit Cd(n) annetaan äänentaso-synteesisuodattimeen 526, joka generoi formanttijäännöksen Pd(n). Äänentasosynteesisuodattimen muistit 20 alustetaan lopputilalla, joka saadaan viimeisestä generoidusta puhenäytteestä. Äänentasosynteesisuodatin 526 käyttää optimaalista äänentasoviivettä L ja optimaalista äänentasovahvistusta b vastaten nykyistä ää-nentasoalikehystä. Kahdeksasosanopeudella optimaalinen 25 äänentasovahvistus asetetaan 0:ksi. Äänentasosynteesisuodattimen lopputila talletetaan käytettäväksi puheen generoinnissa seuraavalle äänentasoalikehyksel-le, kuten mainittiin yllä.
30 Painotettu formanttisynteesisuodatin 528 generoi lähdön Yd(n) formanttijäännöksestä Pd(n). Tämä suodatin alustetaan lopputilalla, joka saadaan viimeisestä generoidusta puhenäytteestä. LPC-vakioita, jotka on laskettu interpoloiduista LSP-arvoista nykyiselle alike-35 hykselle, käytetään suodattimen kertoimina. Suodatti- 82 men lopputila talletetaan puheen käytettäväksi generointiin seuraavalle koodikirja-alikehykselle.
Dekoodattu puhe Yd(n) annetaan jälkisuodattimeen 530, 5 joka esimerkkisovellutuksessa on pitkäkestoinen jäl-kisuodatin perustuen LPC-kertoimiin nykyiselle dekoodattavalle alikehykselle. Jälkisuodatin 530 suodattaa uudelleenmuodostetut puhenäytteet Yd(n) ja antaa suodatetun puheen vahvistuksen ohjaukseen 532. Vahvistuk-10 sen ohjaus 532 ohjaa lähtöpuheen sd(n) tasoa ja sillä voidaan suorittaa automaattinen vahvistuksen ohjaus (AGC).
Edellä oleva edullisten sovellutusten kuvaus annetaan, 15 jotta alan ammattimies voisi valmistaa tai käyttää esillä olevan keksintöä. Näiden sovellutusten eri modifikaatiot ovat alan ammattimiehille ilmeisiä ja tässä kuvatut yleiset periaatteet ovat sovellettavissa muihin sovellutuksiin käyttämättä keksimiskykyä. Näin ollen 20 esillä olevaa keksintöä ei ole tarkoitettu rajata tässä esitettyihin sovellutuksiin vaan sille tulee suoja laajin piiri, joka on yhdenmukainen tässä esitettyjen periaatteiden ja piirteiden kanssa.
25

Claims (13)

1. Digitaalisen signaaliprosessorin (DSP) ydinväli-neet (4) käytettäväksi digitoidun puheen mallinta-5 misessa, useiden arvojen rekursiivista konvoluu tiota varten, tunnettu siitä, että käsittää las-kentavälineet (143) mainitun rekursiivisen laskennan suorittamiseksi ja joukon hajasaantimuisteja (RAM:t) (104, 122, 182), jotka ovat alttiita las-10 kentavälineille, jokainen RAM on vastaavan arvon tallentamista varten siten, että arvot voidaan hakea RAM:eista rinnakkain toistensa kanssa lasken-tavälineillä prosessointia varten.
2. Patenttivaatimuksen 1 mukaiset digitaalisen sig naaliprosessorin (DSP) ydinvälineet (4) mainitun rekursiivisen laskennan suorittamiseksi ensimmäisen sekvenssin ja toisen sekvenssin mukaisesti, jossa mainittu joukko hajasaantimuisteja (104, 20 122, 182) käsittää: ensimmäinen hajasaantimuisti (RAM) (104) mainitun ensimmäisen sekvenssin tallentamiseksi ja antamiseksi; toinen hajasaantimuisti (RAM) (122) mainitun 25 toisen sekvenssin tallentamiseksi ja antami seksi; kolmas hajasaantimuisti (RAM) (182) ylimääräisen sekventiaalisen datan tallentamiseksi ja antamiseksi. 30
3. Patenttivaatimuksen 2 mukaiset digitaalisen signaaliprosessorin (DSP) ydinvälineet (4), jossa mainittu ensimmäinen RAM (104) on ensimmäisen ar-vojoukon, joka edustaa painosyntetisoituja puhe- näytteitä, tallentamista varten, mainittu toinen RAM (122) on toisen arvojoukon, joka edustaa for-manttisuodattimen impulssivasteita, tallentamista varten, ja mainittu kolmas RAM (182) on kolmannen 5 arvojoukon, joka edustaa formanttijäännösten sek venssiä, tallentamista varten.
4. Laite vokooderin toteuttamiseksi, tunnettu siitä, että käsittää: 10 jonkin patenttivaatimuksen 1-3 mukaiset digi taalisen signaaliprosessorin (DSP) ydinväli-neet rekursiivisen konvoluutiolaskennan suorittamista varten ja mainitun rekursiivisen konvoluutiolaskennan tuloksen antamista var- 15 ten; ja minimointiprosessorivälineet (6), jotka ovat erilliset mainituista DSP-ydinvälineistä (4), mainitun rekursiivisen konvoluutiolaskennan tuloksen vastaanottamiseksi ja minimointiet- 20 sinnän suorittamiseksi mainitun rekursiivisen konvoluutiolaskennan mainitun tuloksen mukaisesti rinnakkain DSP-ydinvälineiden (4), jotka suorittavat rekursiivisia konvoluutiolaskento-ja, kanssa. 25
5. Patenttivaatimuksen 4 mukainen laite, joka lisäksi käsittää lohkonormalisointipiirin (136, 140, 150, 160, 162), joka sisältää siirtorekisterin digitoidun puheen näytteiden normalisoimiseksi ilman 30 jakamista.
6. Patenttivaatimuksen 4 tai patenttivaatimuksen 5 mukainen laite, jossa: mainituilla digitaalisen signaalin prosessoinnin (DSP) ydinvälineillä (4) on sisääntulo digitoidun äänidatan sekvenssin vastaanottamista varten, DSP-ydinvälineet generoivat datan syn-5 teettisten versioiden vastaavan sekvenssin; ja mainituilla minimointiprosessointivälineillä (6) on sisääntulo kytkettynä mainittuihin DSP-ydinvälineisiin (4) datan syntetisoitujen versioiden sekvenssin vastaanottamiseksi, mini-10 mointiprosessorivälineet (6) määräävät mini- mieron datan syntetisoidun version ja digitoidun äänidatan välillä ja takaavat sen määräävän funktion rinnakkain DSP-ydinvälineiden (4) kanssa, jotka takaavat sen generointifunk-15 tion.
7. Patenttivaatimuksen 6 mukainen laite, joka lisäksi käsittää digitoidun äänirajapinnan (2), jolla on sisääntulo ensimmäisen äänidatan vastaanottamisek- 20 si ja ulostulo, jossa mainittu DSP-ydinvälineiden sisääntulo on kytketty mainittuun digitoidun ääni-rajapinnan (2) ulostuloon.
8. Patenttivaatimuksen 7 mukainen laite, joka lisäksi 25 käsittää mikroprosessorirajapinnan (8), jolla on sisääntulo mikroprosessoridatan vastaanottamiseksi ja on ulostulo, jossa mainitulla digitoidulla äänira japinnalla (2) on toinen sisääntulo ja jossa mainittu digitoidun äänirajapinnan (2) toinen si-30 sääntulo on kytketty mainittuun mikroprosessorira- japinnan (8) ulostuloon.
9. Jonkin patenttivaatimuksen 4-8 mukainen laite, joka lisäksi käsittää kellogeneraattorin (10), jolla 35 on sisääntulo kellosignaalin vastaanottamista var- ten ja on ulostulo, jossa mainituilla DSP-ydinvälineillä (4) on toinen sisääntulo kytkettynä mainittuun kellogeneraattorin ulostuloon.
10. Jonkin patenttivaatimuksen 4-9 mukainen laite, jossa mainitut minimointiprosessorivälineet (6) vastaanottavat puhenäytteiden ensimmäisen sekvenssin ja syntetisoitujen puhenäytteiden toisen sekvenssin mainituilta digitaalisen signaaliprosesso-10 rin (DSP) ydinvälineiltä ja määräävät pienimmän keskimääräisen neliövirheen (MSE) sekvensseistä, minimointiprosessorivälineet (6) käsittävät: logiikkavälineet toisen sekvenssin autokorrelaation määräämiseksi; 15 logiikkavälineet ristikorrelaation määräämi seksi ensimmäisen sekvenssin ja toisen sekvenssin välillä; ja logiikkavälineet, jotka ovat alttiita autokorrelaatiolle ja ristikorrelaatiolle pienimmän 20 MSE:n määräämiseksi.
11. Mobiilipuhelin, joka sisältää jonkin patenttivaatimuksen 4-10 mukaisen laitteen.
12. Menetelmä digitoidun äänidatan syntetisoimisek- si, joka käsittää takaavan rekursiivisen konvoluution ensimmäisen sekvenssin, joka edustaa syntetisoituja puhenäytteitä mobiilipuhelinjärjestelmässä, ja toisen sekvenssin, joka edustaa puhenäyt-30 teitä, välillä, tunnettu siitä, että menetelmä kä sittää vaiheet: suoritetaan alkukonvoluutio; testataan onko vaiheindeksi parillinen; noudetaan mainittu ensimmäinen sekvenssi ensimmäisestä muistielementistä (104); noudetaan mainittu toinen sekvenssi toisesta muistielementistä (122); 5 noudetaan osittainen konvoluutiotulos kolman nesta muistielementistä (182), kun mainittu vaiheindeksi on parillinen; suoritetaan osittainen konvoluutio mainitun noudetun ensimmäisen sekvenssin, mainitun nou-10 detun toisen sekvenssin ja mainitun noudetun osittaisen konvoluutiotuloksen mukaisesti; tallennetaan mainitun osittaisen konvoluution tulos mainittuun toiseen muistielementtiin (122), kun mainittu vaiheindeksi on parilli- 15 nen; noudetaan osittainen konvoluutio mainitusta toisesta muistielemetistä (122), kun mainittu vaiheindeksi on pariton; suoritetaan osittainen konvoluutio mainitun 20 noudetun ensimmäisen sekvenssin, mainitun nou detun toisen sekvenssin ja mainitun noudetun osittaisen konvoluution mukaisesti; tallennetaan mainitun osittaisen konvoluution tulos mainittuun kolmanteen muistielementtiin 25 (182), kun mainittu vaiheindeksi on pariton; ja prosessoidaan konvoluutiotulosta sekvenssien välisen eron minimoimiseksi digitoidun äänidatan tarkan synteesin antamiseksi. 30
13. Patenttivaatimuksen 12 mukainen menetelmä, joka lisäksi käsittää aikaisemmin generoidun kon-voluutiotuloksen noutamisen rengaspuskurista (259) .
FI954920A 1994-02-16 1995-10-16 Vokooderi-ASIC FI120117B (fi)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US19741794 1994-02-16
US08/197,417 US5784532A (en) 1994-02-16 1994-02-16 Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system
US9502043 1995-02-13
PCT/US1995/002043 WO1995022819A1 (en) 1994-02-16 1995-02-13 Vocoder asic

Publications (3)

Publication Number Publication Date
FI954920A0 FI954920A0 (fi) 1995-10-16
FI954920A FI954920A (fi) 1995-12-15
FI120117B true FI120117B (fi) 2009-06-30

Family

ID=22729345

Family Applications (2)

Application Number Title Priority Date Filing Date
FI954920A FI120117B (fi) 1994-02-16 1995-10-16 Vokooderi-ASIC
FI20070887A FI20070887L (fi) 1994-02-16 2007-11-21 Vokooderi-ASIC

Family Applications After (1)

Application Number Title Priority Date Filing Date
FI20070887A FI20070887L (fi) 1994-02-16 2007-11-21 Vokooderi-ASIC

Country Status (23)

Country Link
US (3) US5784532A (fi)
EP (2) EP0695454B1 (fi)
JP (2) JP3432826B2 (fi)
KR (1) KR100334202B1 (fi)
CN (2) CN100397484C (fi)
AT (2) ATE172570T1 (fi)
AU (1) AU697822B2 (fi)
BR (1) BR9505650A (fi)
CA (1) CA2158660C (fi)
DE (2) DE69505469T2 (fi)
DK (2) DK0695454T3 (fi)
ES (2) ES2125602T3 (fi)
FI (2) FI120117B (fi)
HK (1) HK1009303A1 (fi)
IL (1) IL112650A (fi)
MX (1) MX9504358A (fi)
MY (1) MY112434A (fi)
RU (1) RU2183034C2 (fi)
SG (2) SG87819A1 (fi)
SI (1) SI0758123T1 (fi)
TW (1) TW326601B (fi)
WO (1) WO1995022819A1 (fi)
ZA (1) ZA95798B (fi)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336106B1 (en) * 1994-02-15 2002-01-01 R.R. Donnelley & Sons Company System and method for partitioning a real-valued attribute exhibiting windowed data characteristics
FR2729246A1 (fr) * 1995-01-06 1996-07-12 Matra Communication Procede de codage de parole a analyse par synthese
FI955266A (fi) * 1995-11-02 1997-05-03 Nokia Telecommunications Oy Menetelmä ja laitteisto viestien välittämiseksi tietoliikennejärjestelmässä
EP0858069B1 (en) * 1996-08-02 2006-11-29 Matsushita Electric Industrial Co., Ltd. Voice encoder, voice decoder and recording medium thereof
KR100189636B1 (ko) * 1996-10-30 1999-06-01 서평원 씨디엠에이 이동 통신 단말기의 양방향 녹음방법
US6009395A (en) * 1997-01-02 1999-12-28 Texas Instruments Incorporated Synthesizer and method using scaled excitation signal
GB2323188B (en) * 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
US6167133A (en) * 1997-04-02 2000-12-26 At&T Corporation Echo detection, tracking, cancellation and noise fill in real time in a communication system
JP3263347B2 (ja) * 1997-09-20 2002-03-04 松下電送システム株式会社 音声符号化装置及び音声符号化におけるピッチ予測方法
US6104994A (en) * 1998-01-13 2000-08-15 Conexant Systems, Inc. Method for speech coding under background noise conditions
KR100572945B1 (ko) * 1998-02-04 2006-04-24 텍사스 인스트루먼츠 인코포레이티드 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기
US6141638A (en) * 1998-05-28 2000-10-31 Motorola, Inc. Method and apparatus for coding an information signal
US6112170A (en) * 1998-06-26 2000-08-29 Lsi Logic Corporation Method for decompressing linear PCM and AC3 encoded audio gain value
US7117146B2 (en) * 1998-08-24 2006-10-03 Mindspeed Technologies, Inc. System for improved use of pitch enhancement with subcodebooks
GB2342829B (en) * 1998-10-13 2003-03-26 Nokia Mobile Phones Ltd Postfilter
US6351800B1 (en) * 1998-11-29 2002-02-26 Lucent Technologies, Inc. System and method for assisting a microprocessor
US6411926B1 (en) * 1999-02-08 2002-06-25 Qualcomm Incorporated Distributed voice recognition system
US6314393B1 (en) * 1999-03-16 2001-11-06 Hughes Electronics Corporation Parallel/pipeline VLSI architecture for a low-delay CELP coder/decoder
US6260017B1 (en) 1999-05-07 2001-07-10 Qualcomm Inc. Multipulse interpolative coding of transition speech frames
JP3594514B2 (ja) * 1999-07-12 2004-12-02 株式会社ソニー・コンピュータエンタテインメント エンコーダ、デコーダ、音声データ処理装置、音声データ処理システム、音声データ圧縮方法、音声データ伸張方法、音声データ処理方法及び記録媒体
US6330532B1 (en) 1999-07-19 2001-12-11 Qualcomm Incorporated Method and apparatus for maintaining a target bit rate in a speech coder
US6324503B1 (en) 1999-07-19 2001-11-27 Qualcomm Incorporated Method and apparatus for providing feedback from decoder to encoder to improve performance in a predictive speech coder under frame erasure conditions
US6397175B1 (en) 1999-07-19 2002-05-28 Qualcomm Incorporated Method and apparatus for subsampling phase spectrum information
US6393394B1 (en) 1999-07-19 2002-05-21 Qualcomm Incorporated Method and apparatus for interleaving line spectral information quantization methods in a speech coder
US6452517B1 (en) * 1999-08-03 2002-09-17 Dsp Group Ltd. DSP for two clock cycle codebook search
US6426982B1 (en) * 1999-09-17 2002-07-30 Cadonca Design Systems, Inc. Low complexity multiple bits matched filter
US6438518B1 (en) 1999-10-28 2002-08-20 Qualcomm Incorporated Method and apparatus for using coding scheme selection patterns in a predictive speech coder to reduce sensitivity to frame error conditions
WO2001077635A1 (en) * 2000-04-06 2001-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Estimating the pitch of a speech signal using a binary signal
AU2001258298A1 (en) * 2000-04-06 2001-10-23 Telefonaktiebolaget Lm Ericsson (Publ) Pitch estimation in speech signal
WO2001078061A1 (en) * 2000-04-06 2001-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Pitch estimation in a speech signal
US6584438B1 (en) 2000-04-24 2003-06-24 Qualcomm Incorporated Frame erasure compensation method in a variable rate speech coder
EP1279167B1 (en) * 2000-04-24 2007-05-30 QUALCOMM Incorporated Method and apparatus for predictively quantizing voiced speech
US6532066B1 (en) 2000-08-05 2003-03-11 Ford Global Technologies, Inc. Vision system for identification of defects in wet polymeric coatings
US6477502B1 (en) 2000-08-22 2002-11-05 Qualcomm Incorporated Method and apparatus for using non-symmetric speech coders to produce non-symmetric links in a wireless communication system
US7133823B2 (en) * 2000-09-15 2006-11-07 Mindspeed Technologies, Inc. System for an adaptive excitation pattern for speech coding
US6804203B1 (en) * 2000-09-15 2004-10-12 Mindspeed Technologies, Inc. Double talk detector for echo cancellation in a speech communication system
US7003450B2 (en) * 2000-10-20 2006-02-21 Pts Corporation Methods and apparatus for efficient vocoder implementations
US7472059B2 (en) * 2000-12-08 2008-12-30 Qualcomm Incorporated Method and apparatus for robust speech classification
US6631139B2 (en) 2001-01-31 2003-10-07 Qualcomm Incorporated Method and apparatus for interoperability between voice transmission systems during speech inactivity
US7013269B1 (en) * 2001-02-13 2006-03-14 Hughes Electronics Corporation Voicing measure for a speech CODEC system
US6754624B2 (en) 2001-02-13 2004-06-22 Qualcomm, Inc. Codebook re-ordering to reduce undesired packet generation
US6996523B1 (en) * 2001-02-13 2006-02-07 Hughes Electronics Corporation Prototype waveform magnitude quantization for a frequency domain interpolative speech codec system
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
JP3859462B2 (ja) 2001-05-18 2006-12-20 株式会社東芝 予測パラメータ分析装置および予測パラメータ分析方法
US20030005261A1 (en) * 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US20030195006A1 (en) * 2001-10-16 2003-10-16 Choong Philip T. Smart vocoder
US7020226B1 (en) * 2002-04-04 2006-03-28 Nortel Networks Limited I/Q distortion compensation for the reception of OFDM signals
CN1312463C (zh) * 2002-04-22 2007-04-25 诺基亚有限公司 一种产生lsf矢量的方法和装置
US7698132B2 (en) * 2002-12-17 2010-04-13 Qualcomm Incorporated Sub-sampled excitation waveform codebooks
JP2004362215A (ja) * 2003-06-04 2004-12-24 Toshiba Corp プロセッサ及び半導体集積回路
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
TWI241557B (en) * 2003-07-21 2005-10-11 Ali Corp Method for estimating a pitch estimation of the speech signals
US6983241B2 (en) * 2003-10-30 2006-01-03 Motorola, Inc. Method and apparatus for performing harmonic noise weighting in digital speech coders
BRPI0514801B1 (pt) 2004-08-30 2019-06-18 Qualcomm Incorporated Buffer de-jitter adaptativo para voz sobre ip
US8085678B2 (en) 2004-10-13 2011-12-27 Qualcomm Incorporated Media (voice) playback (de-jitter) buffer adjustments based on air interface
US8209366B2 (en) * 2005-02-28 2012-06-26 Hitachi Global Storage Technologies Netherlands B.V. Method, apparatus and program storage device that provides a shift process with saturation for digital signal processor operations
WO2007120316A2 (en) * 2005-12-05 2007-10-25 Qualcomm Incorporated Systems, methods, and apparatus for detection of tonal components
US8090573B2 (en) * 2006-01-20 2012-01-03 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with open loop re-decision
US8346544B2 (en) * 2006-01-20 2013-01-01 Qualcomm Incorporated Selection of encoding modes and/or encoding rates for speech compression with closed loop re-decision
US8032369B2 (en) * 2006-01-20 2011-10-04 Qualcomm Incorporated Arbitrary average data rates for variable rate coders
US8920343B2 (en) 2006-03-23 2014-12-30 Michael Edward Sabatino Apparatus for acquiring and processing of physiological auditory signals
US7831420B2 (en) * 2006-04-04 2010-11-09 Qualcomm Incorporated Voice modifier for speech processing systems
US7685493B2 (en) * 2006-09-29 2010-03-23 Agere Systems Inc. Buffer compression in automatic retransmission request (ARQ) systems
US20090180456A1 (en) * 2008-01-15 2009-07-16 Khoi Ly Method and system for adaptive quantization steps for hs-scch decoding using average cqi
US20100082722A1 (en) * 2008-09-26 2010-04-01 Sinnokrot Mohanned O Methods and Apparatuses for Detection and Estimation with Fast Fourier Transform (FFT) in Orthogonal Frequency Division Multiplexing (OFDM) Communication Systems
JP5430990B2 (ja) * 2009-03-25 2014-03-05 株式会社東芝 信号処理方法、装置及びプログラム
JP5316896B2 (ja) * 2010-03-17 2013-10-16 ソニー株式会社 符号化装置および符号化方法、復号装置および復号方法、並びにプログラム
TR201904735T4 (tr) 2010-04-13 2019-04-22 Fraunhofer Ges Forschung Bi̇r ses si̇nyali̇ni̇n boşluksuz yeni̇den oynatilmasina yöneli̇k yöntem ve kodlayici ve dekoder
TWI479160B (zh) * 2010-12-20 2015-04-01 Hon Hai Prec Ind Co Ltd 測試裝置及方法
WO2012110447A1 (en) 2011-02-14 2012-08-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for error concealment in low-delay unified speech and audio coding (usac)
WO2012110415A1 (en) 2011-02-14 2012-08-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for processing a decoded audio signal in a spectral domain
AR085224A1 (es) 2011-02-14 2013-09-18 Fraunhofer Ges Forschung Codec de audio utilizando sintesis de ruido durante fases inactivas
MX2013009306A (es) 2011-02-14 2013-09-26 Fraunhofer Ges Forschung Aparato y metodo para codificar y decodificar una señal de audio utilizando una porcion alineada anticipada.
MX2013009304A (es) 2011-02-14 2013-10-03 Fraunhofer Ges Forschung Aparato y metodo para codificar una porcion de una señal de audio utilizando deteccion de un transiente y resultado de calidad.
CN103477387B (zh) 2011-02-14 2015-11-25 弗兰霍菲尔运输应用研究公司 使用频谱域噪声整形的基于线性预测的编码方案
CA2799343C (en) 2011-02-14 2016-06-21 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal representation using lapped transform
MY159444A (en) 2011-02-14 2017-01-13 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E V Encoding and decoding of pulse positions of tracks of an audio signal
CN103460284B (zh) 2011-02-14 2016-05-18 弗劳恩霍夫应用研究促进协会 音频信号音轨脉冲位置的编码与译码
US8990074B2 (en) * 2011-05-24 2015-03-24 Qualcomm Incorporated Noise-robust speech coding mode classification
JP2014035431A (ja) * 2012-08-08 2014-02-24 Renesas Mobile Corp ボコーダ処理方法、半導体装置、及び電子装置
TWM487509U (zh) * 2013-06-19 2014-10-01 杜比實驗室特許公司 音訊處理設備及電子裝置
CN109920440B (zh) 2013-09-12 2024-01-09 杜比实验室特许公司 用于各种回放环境的动态范围控制
EP2980796A1 (en) * 2014-07-28 2016-02-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Method and apparatus for processing an audio signal, audio decoder, and audio encoder
CN109413685B (zh) * 2017-08-18 2022-02-15 中国电信股份有限公司 语音质量确定方法、装置和计算机可读存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US448493A (en) 1891-03-17 Hemp-brake
SU518781A1 (ru) * 1974-11-25 1976-06-25 Таганрогский радиотехнический институт им.В.Д.Калмыкова Вычислительное устройство цифровой интегрирующей структуры
CN1003484B (zh) * 1985-05-20 1989-03-01 菲利浦光灯制造公司 产生定幅的角度调制载波信号的装置
US4789956A (en) * 1985-10-16 1988-12-06 Harris Corp. Maximum negative number detector
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
US4808937A (en) * 1986-07-15 1989-02-28 Hayes Microcomputer Products, Inc. Phase-locked loop for a modem
ES2037101T3 (es) * 1987-03-05 1993-06-16 International Business Machines Corporation Procedimiento de deteccion de tono y codificador de voz que utiliza dicho procedimiento.
FR2615025B1 (fr) * 1987-05-04 1989-12-22 Thomson Csf Dispositif de transcodage entre reseaux de transmission a debits differents et son utilisation dans un systeme de transmission multidebits
DE3732047A1 (de) * 1987-09-23 1989-04-06 Siemens Ag Verfahren zur umcodierung von kanalvocoder-parameter in lpc-vocoder-parameter
EP0383911B1 (en) * 1988-06-17 1995-02-15 Hitachi, Ltd. System for forming knowledge data
JPH0284807A (ja) * 1988-09-20 1990-03-26 Hitachi Ltd ディジタル信号処理装置
WO1990004316A1 (en) * 1988-10-03 1990-04-19 Alcatel N.V. Communication switching element
US5768613A (en) * 1990-07-06 1998-06-16 Advanced Micro Devices, Inc. Computing apparatus configured for partitioned processing
DE4031603A1 (de) * 1990-10-05 1992-04-09 Paul Merkle Ergebniszahl-verschiebeschaltung
US5173941A (en) * 1991-05-31 1992-12-22 Motorola, Inc. Reduced codebook search arrangement for CELP vocoders
CA2568984C (en) * 1991-06-11 2007-07-10 Qualcomm Incorporated Variable rate vocoder
KR100263599B1 (ko) 1991-09-02 2000-08-01 요트.게.아. 롤페즈 인코딩 시스템
TW224191B (fi) * 1992-01-28 1994-05-21 Qualcomm Inc
US5778024A (en) * 1996-02-01 1998-07-07 Qualcomm Incorporated Dual-mode communications processor
US5742781A (en) * 1996-08-09 1998-04-21 Hitachi America, Ltd. Decoded instruction buffer apparatus and method for reducing power consumption in a digital signal processor

Also Published As

Publication number Publication date
SG52441A1 (en) 1998-09-28
CN100397484C (zh) 2008-06-25
AU697822B2 (en) 1998-10-15
FI954920A0 (fi) 1995-10-16
DE69505469D1 (en) 1998-11-26
EP0695454B1 (en) 1998-10-21
HK1009303A1 (en) 1999-05-28
IL112650A0 (en) 1995-05-26
JP3432826B2 (ja) 2003-08-04
US5926786A (en) 1999-07-20
MX9504358A (es) 1997-05-31
RU2183034C2 (ru) 2002-05-27
DK0695454T3 (da) 1999-07-05
EP0758123A3 (en) 1997-03-12
KR100334202B1 (ko) 2002-10-11
JP4194851B2 (ja) 2008-12-10
CN1168072C (zh) 2004-09-22
TW326601B (en) 1998-02-11
US5784532A (en) 1998-07-21
ZA95798B (en) 1996-01-22
SG87819A1 (en) 2002-04-16
DE69509381T2 (de) 1999-11-25
CN1123061A (zh) 1996-05-22
EP0758123B1 (en) 1999-04-28
CA2158660C (en) 2006-01-24
EP0758123A2 (en) 1997-02-12
DK0758123T3 (da) 1999-11-08
DE69505469T2 (de) 1999-06-10
ES2125602T3 (es) 1999-03-01
WO1995022819A1 (en) 1995-08-24
ATE172570T1 (de) 1998-11-15
ATE179532T1 (de) 1999-05-15
KR960702147A (ko) 1996-03-28
FI954920A (fi) 1995-12-15
CN1512486A (zh) 2004-07-14
JPH08509306A (ja) 1996-10-01
EP0695454A1 (en) 1996-02-07
FI20070887L (fi) 2007-11-21
SI0758123T1 (en) 1999-10-31
DE69509381D1 (de) 1999-06-02
US5727123A (en) 1998-03-10
MY112434A (en) 2001-06-30
AU1846595A (en) 1995-09-04
JP2003216198A (ja) 2003-07-30
BR9505650A (pt) 1996-03-05
IL112650A (en) 1998-12-06
CA2158660A1 (en) 1995-08-24
ES2130733T3 (es) 1999-07-01

Similar Documents

Publication Publication Date Title
FI120117B (fi) Vokooderi-ASIC
AU683127B2 (en) Linear prediction coefficient generation during frame erasure or packet loss
US4969192A (en) Vector adaptive predictive coder for speech and audio
EP0573398B1 (en) C.E.L.P. Vocoder
US5596676A (en) Mode-specific method and apparatus for encoding signals containing speech
KR19980024885A (ko) 벡터양자화 방법, 음성부호화 방법 및 장치
EP2080193A2 (en) Pitch lag estimation
Cox et al. New directions in subband coding
US6314393B1 (en) Parallel/pipeline VLSI architecture for a low-delay CELP coder/decoder
US5682407A (en) Voice coder for coding voice signal with code-excited linear prediction coding
CA2520127C (en) Block normalization processor
AU725711B2 (en) Block normalisation processor
Mobini et al. An FPGA based implementation of G. 729
Banerjee et al. Optimizations of ITU G. 729 speech codec
Suddle et al. DSP implementation of low bit-rate CELP based speech orders
Byun et al. Implementation of 13 kbps QCELP vocoder ASIC
Liu et al. Optimization of 2.4 KBPS MELPe based on ARM9
Prasad et al. Half-rate GSM vocoder implementation on a dual Mac digital signal processor
KR100354747B1 (ko) 다중펄스 최대 유사 양자화기에 구비되는 고정 코드북 이득 테이블 생성방법
Lee Implementation of linear predictive speech coding in fixed-point arithmetic
Ohta et al. Efficient PSI-CELP DSP implementation
Guanghui et al. Real-time implementation of 16 kb/s low-delay CELP speech coding algorithm on a TMS320C30
Shoham et al. New Directions in Subband Coding
Shum Optimisation techniques for low bit rate speech coding
Jamal et al. Multi-channel implementation of G. 729 A/B on FPGA

Legal Events

Date Code Title Description
FG Patent granted

Ref document number: 120117

Country of ref document: FI

MM Patent lapsed