©copyright Raimo Olavi Toivonen 19822019. All rights reserved. Last updated 1 Jun 2019.

Home  Signal displays  Multi-envelope displays  FFT displays  Cepstrum displays 1983−  LPC displays  Auditory displays 1983−  Loudness displays  Loudness curves  Timbre spectrum 1983−  LTAS displays  Harmonic FFT displays  F0 displays 1983−  F0 histograms with semi scale 1989−  Jitter/shimmer 1990−  Computer Voice Fields 1983−  FFT spectrogram displays  LPC spectrogram displays  Auditory spectrogram displays  Bark, ERB, mel, st ja Hz scales formant charts 1988−  Bark scale 1983−  ERB scale 1996−  Semi scale 1989−  Sone scale 1995− Works 1972−  Other links  Maailman kielten Bark-asteikkoiset formanttikartat 2018−

ISA software


Spektrisarjat
Intelligent Speech Analyser™ (ISA) -ohjelmassa

FFT-spektrisarja dB/Hz-asteikolla.

|X(k)|dB (k=0...N/2-1) = 20log10|SUM(w(n)x(n)e-jk(2π/N)n)|, n=0...N-1. Signaali x(n) = xa(nT), n=0...N-1, T on näytejakso, xa= analogiasignaali. Jos xa on mikrofonin jännitesignaali, niin xa(nT) = kPa(nT), jossa Pa on paine ja k on vakiokerroin.

Laskenta käyttää decimation-in-time (DIT) laskentatapaa.
Olen vuosien varrella koodannut DSP-miehenä FFT:n täysin nollasta
(1) Texasin 16-bittiselle TMS320-signaaliprosessoriperheelle konekielellä,
(2) Motorolan 16- ja 32-bittisille
M68000-mikroprosessoriperheille konekielellä ja C-kielellä,
(3) IBM:n 600-sarjan 32-bittiselle PowerPC-mikroprosessoriperheelle konekielellä ja C-kielellä,
(4) Intelin 32- ja 64-bittisille mikroprosessoriperheille C++-kielellä.

Signaalin ikkunointi tapahtuu Hamming-ikkunalla, suorakaide-ikkunalla tai yli 90 dB:n Blackman-Harris-ikkunalla.


Analyysikuvat olen alusta saakka koodannut älykkäiksi Neon olio-ohjelmointikielellä.

Hamming-ikkuna w(n) = 0.54-0.46cos(2πn/(N-1)).

Blackman-Harris-ikkuna w(n) = 0.35875-0.48829cos(2πn/(N-1))+0.14128cos(4πn/(N-1))-0.01168cos(6πn/(N-1)).

Hz:t muunnetaan Bark:eiksi kaavalla Hz->Bark=7sinh(f/650)=7ln[f/650+√(1+(f/650)2)] ja
Bark:it muunnetaan Hz:eiksi kaavalla Bark->Hz=650sinh(x/7).

Hz:t muunnetaan ERB:eiksi kaavalla Hz->ERB=21,3log10(1+f/228,7) ja
ERB:it muunnetaan Hz:eiksi kaavalla ERB->Hz=228,7(10x/21,3-1).

Hz:t muunnetaan mel:eiksi kaavalla Hz->mel=2595log10(1+f/700) ja
mel:it muunnetaan Hz:eiksi kaavalla mel->Hz=700(10x/2595-1).

Edellä mainitut Bark-asteikon muunnoskaavat käytössäni jo vuodesta 1983 saakka.

LPC-spektrisarjat dB/Hz-asteikolla.

LPC-spektrin toteutin PARCOR-laskennalla. Vuosien varrella olen DSP-miehenä koodannut PARCOR:in täysin nollasta 
(1) Texasin 16-bittiselle TMS320-signaaliprosessoriperheelle konekielellä,
(2) Motorolan 16- ja 32-bittisille M68000-mikroprosessoriperheille konekielellä ja C-kielellä,
(3) IBM:n 600-sarjan 32-bittiselle PowerPC-mikroprosessoriperheelle konekielellä ja C-kielellä,
(4) Intelin 32- ja 64-bittisille mikroprosessoriperheille C++-kielellä.

Signaalin ikkunointi tapahtuu Hamming-ikkunalla, suorakaide-ikkunalla tai yli 90 dB:n Blackman-Harris-ikkunalla.


Analyysikuvat olen alusta saakka koodannut älykkäiksi Neon olio-ohjelmointikielellä.

Auditoriset spektrisarjat dB/Bark-asteikolla.

Käsitteet "auditorinen" (auditory) ja "auditiivinen" (auditive) ovat eri käsitteitä. ISA:ssa käytetään nimenomaan käsitettä "auditorinen" (auditory).

35 vuoden ajan Bark-asteikko ja auditorinen suodinpankkimalli ovat olleet minulla rutiinikäytössä Otaniemen työvuodestani 1983 lähtien. Kehitin tällöin auditorista suodinpankkimallia yhdessä professori Matti Karjalaisen kanssa. Työskentelin vuosikymmeniä 1970-luvulta saakka Matti Karjalaisen kanssa.

Vuosien varrella olen DSP-miehenä koodannut auditorisen suodinpankkimallin täysin nollasta
(1) PDP-11/34:n Floating Point Systems FPS 100 vektoriprosessoriympäristöön Fortranilla,
(2) Texasin 16-bittiselle TMS320-signaaliprosessoriperheelle konekielellä,
(3) Motorolan 16- ja 32-bittisille M68000-mikroprosessoriperheille konekielellä ja C-kielellä,
(4) IBM:n 600-sarjan 32-bittiselle PowerPC-mikroprosessoriperheelle konekielellä ja C-kielellä,
(5) Intelin 32- ja 64-bittisille mikroprosessoriperheille C++-kielellä.

Analyysikuvat olen alusta saakka koodannut älykkäiksi Neon olio-ohjelmointikielellä.

Hz:t muunnetaan Bark:eiksi kaavalla Hz->Bark 7asinh(f/650)=7ln[f/650+√(1+(f/650)2)] ja
Bark:it muunnetaan Hz:eiksi kaavalla Bark->Hz=650sinh(x/7).

Edellä mainitut Bark-asteikon muunnoskaavat käytössäni jo vuodesta 1983 saakka.

Kepstrisarjat lin/Hz-asteikolla.

|X(k)|dB (k=0...N/2-1) = 20log10|SUM(w(n)x(n)e-jk(2π/N)n)|, n=0...N-1. |Y(k)| (k=0...N/4-1) = |SUM(|X(n)|dBe-jk(2π/N)n)|, n=0...N/2-1. Signaali x(n) = xa(nT), n=0...N-1, T on näytejakso, xa= analogiasignaali. Jos xa on mikrofonin jännitesignaali, niin xa(nT) = kPa(nT), jossa Pa on paine ja k on vakiokerroin.

Kepstri lasketaan decimation-in-time (DIT) algoritmilla. Vuosien varrella olen DSP-miehenä koodannut täysin nollasta kepstrin (kaksoisFFT, kaksoisDFT)
(1) Texasin 16-bittiselle TMS320-signaaliprosessoriperheelle konekielellä,
(2) Motorolan 16- ja 32-bittisille M68000-mikroprosessoriperheille konekielellä ja C-kielellä,
(3) IBM:n 600-sarjan 32-bittiselle PowerPC-mikroprosessoriperheelle konekielellä ja C-kielellä,
(4) Intelin 32- ja 64-bittisille mikroprosessoriperheille C++-kielellä.


Signaalin ikkunointi tapahtuu
Hamming-ikkunalla, suorakaide-ikkunalla tai yli 90 dB:n Blackman-Harris-ikkunalla.


Analyysikuvat olen alusta saakka koodannut älykkäiksi Neon olio-ohjelmointikielellä.

Hamming-ikkuna w(n) = 0.54-0.46cos(2πn/(N-1)).


Blackman-Harris-ikkuna w(n) = 0.35875-0.48829cos(2πn/(N-1))+0.14128cos(4πn/(N-1))-0.01168cos(6πn/(N-1)).