Pereiti prie pagrindinio turinio

Garso spektro analizatorius nemokamai

Vizualizuokite garso dažnius realiuoju laiku kaip juostas, bangų formas ar apskritimines spektrogramas. Veikia su garso failais arba tiesiogine mikrofono įvestimi — veikia jūsų naršyklėje.

Veikia neprisijungus, kai įkeliama

Nuvilkite failą čia arba spustelėkite, kad pasirinktumėte

MP3, WAV, OGG, M4A, FLAC, AAC, OPUS · apdorojama jūsų įrenginyje

arba paspauskite Ctrl+V, kad įklijuotumėte iš iškarpinės

Naršyti failus

Jūsų failai niekada nepalieka jūsų įrenginio. Visas apdorojimas vyksta vietiškai jūsų naršyklėje.

—
Dominuojantis dažnis
—
Artimiausias tonas
—
Smailės lygis
—
RMS lygis
Nustatymai
Dažnio skalė

Diskretizavimo dažnis: 44,1 kHz · Raiška: 5,4 Hz/bin · FFT 8192

Visa analizė vyksta jūsų naršyklėje naudojant Web Audio API — jūsų garsas niekada nebus įkeltas.

Dažniausi naudojimo būdai

  • Analizuokite podcast garsoPatikrinkite podcast irasu dej kambario triuksmo, sprogimij ir sibilanto naudodami spektra.

Kaip tai veikia

Garso spektro analizatorius veikia visiškai jūsų naršyklėje, naudodamas Web Audio API AnalyserNode mazgą, kuris realiu laiku apskaičiuoja FFT (greitąją Furjė transformaciją) iš failo ar mikrofono garso duomenų. Kiekvienas kadras piešiamas rankomis parašytu Canvas 2D kodu — jokia vizualizacijos biblioteka nenaudojama, ir garsas nepalieka jūsų įrenginio.

  1. 1
    Garsas dekoduojamas ir nukreipiamas
    Įkėlus failą, Web Audio API dekoduoja jį į AudioBuffer ir nukreipia per MediaElementAudioSourceNode į AnalyserNode. Mikrofono įvesčiai getUserMedia() užfiksuoja srautą ir tiekia jį per MediaStreamAudioSourceNode — su išjungtu aido slopinimu, triukšmo mažinimu ir automatiniu stiprinimu, kad matytumėte neapdorotą signalą.
  2. 2
    AnalyserNode kiekviename kadre vykdo FFT
    Kiekviename animacijos kadre (per requestAnimationFrame) kodas iškviečia getFloatFrequencyData(), kad nuskaitytų dabartinį FFT amplitudžių spektrą dBFS vienetais, ir getFloatTimeDomainData() neapdorotiems bangos formos mėginiams. FFT dydis konfigūruojamas nuo 2048 iki 16384 diskretų, suteikiant dažnio skiriamąją gebą iki apie 2,7 Hz/diskretas prie 44,1 kHz.
  3. 3
    Canvas 2D atvaizduoja pasirinktą rodinį
    „Analizatoriaus“ rodinys susieja FFT diskretus su logaritmine dažnio ašimi (20 Hz–20 kHz) ir dBFS Y ašimi, piešia spektrą kaip užpildytą liniją ir uždeda blėstantį viršūnės sekimo pėdsaką. Dominuojantis dažnis tiksliai nustatomas parabolinės interpoliacijos būdu aplink viršūninį diskretą, tada konvertuojamas į artimiausią lygiai temperuotą muzikinę natą (A4=440 Hz), rodmenyje nurodant nuokrypį centais. „Spektrogramos“ rodinys kiekviename kadre paslenka drobę vienu pikseliu į kairę ir nupiešia naują stulpelį naudodamas „inferno“ stiliaus spalvų gradientą. „Meninis“ rodinys naudoja baito raiškos dažnio ar laiko srities duomenis stulpelinei, bangos ar žiedinei dekoratyvinei formai.
  4. 4
    Eksportas per Canvas ir MediaRecorder
    PNG išsaugojimas iškviečia canvas.toBlob(), kad užkoduotų dabartinį kadrą. Vaizdo įrašymui naudojamas canvas.captureStream(30) kartu su garso paėmimu iš MediaStreamAudioDestinationNode, nukreipiamu į MediaRecorder, kuris sukuria WebM arba MP4. WAV eksportas rankomis užkoduoja 16 bitų PCM RIFF failą iš AudioBuffer naudojant DataView — jokio išorinio koduotuvo.

Jūsų garso failą naršyklėje dekoduoja Web Audio API, ir jis niekada neįkeliamas — failo baitai lieka jūsų įrenginyje viso analizės ir eksporto proceso metu.

Susiję įrankiai

Dažnai užduodami klausimai