GNU/Linux >> Znalost Linux >  >> Linux

Jaký je dobrý přístup k extrahování částí řeči z libovolného zvukového souboru?

EnergyDetector

Pro detekci hlasové aktivity jsem používal program EnergyDetector sady nástrojů pro rozpoznávání reproduktorů MISTRAL (byl LIA_RAL), založený na knihovně ALIZE.

Pracuje se soubory funkcí, nikoli se zvukovými soubory, takže budete muset extrahovat energii signálu. Obvykle extrahuji kepstrální rysy (MFCC) pomocí parametru log-energie a tento parametr používám pro VAD. Sfbcep`, obslužnou součást sady nástrojů pro zpracování signálu SPro, můžete použít následujícím způsobem:

sfbcep -F PCM16 -p 19 -e -D -A input.wav output.prm

Získá 19 MFCC + logaritmický energetický koeficient + delta koeficienty prvního a druhého řádu. Energetický koeficient je 19., určíte jej v konfiguračním souboru EnergyDetector.

Poté spustíte EnergyDetector tímto způsobem:

EnergyDetector --config cfg/EnergyDetector.cfg --inputFeatureFilename output 

Pokud používáte konfigurační soubor, který najdete na konci odpovědi, musíte zadat output.prm v prm/ a segmentaci najdete v lbl/ .

Jako odkaz přikládám konfigurační soubor EnergyDetector:

*** EnergyDetector Config File
***

loadFeatureFileExtension        .prm
minLLK                          -200
maxLLK                          1000
bigEndian                       false
loadFeatureFileFormat           SPRO4
saveFeatureFileFormat           SPRO4
saveFeatureFileSPro3DataKind    FBCEPSTRA
featureServerBufferSize         ALL_FEATURES
featureServerMemAlloc           50000000
featureFilesPath                prm/
mixtureFilesPath                gmm/
lstPath                         lst/
labelOutputFrames               speech
labelSelectedFrames             all
addDefaultLabel                 true
defaultLabel                    all
saveLabelFileExtension          .lbl
labelFilesPath                  lbl/    
frameLength                     0.01
segmentalMode                   file
nbTrainIt                       8       
varianceFlooring                0.0001
varianceCeiling                 1.5     
alpha                           0.25
mixtureDistribCount             3
featureServerMask               19      
vectSize                        1
baggedFrameProbabilityInit      0.1
thresholdMode                   weight

Sfinga CMU

Software pro rozpoznávání řeči CMU Sphinx obsahuje vestavěný VAD. Je napsán v C a možná ho budete moci hacknout a vytvořit pro vás soubor štítku.

Velmi nedávným přírůstkem je podpora GStreamer. To znamená, že můžete použít jeho VAD v kanálu médií GStreamer. Viz Použití PocketSphinx s GStreamer a Python -> Element 'vader'

Další VAD

Také jsem používal upravenou verzi kodeku AMR1, který vydává soubor s klasifikací řeči/nemluvy, ale nemohu najít její zdroje online, omlouvám se.


webrtcvad je obal Pythonu kolem vynikajícího kódu detekce hlasové aktivity WebRTC od Googlu.

Dodává se se souborem example.py, který dělá přesně to, co hledáte:Díky souboru .wav najde každý výskyt někoho mluvícího a zapíše ho do nového samostatného souboru .wav.

Webrtcvad API je extrémně jednoduché, pro případ, že example.py nedělá přesně to, co chcete:

import webrtcvad

vad = webrtcvad.Vad()
# sample must be 16-bit PCM audio data, either 8KHz, 16KHz or 32Khz,
# and 10, 20, or 30 milliseconds long.
print vad.is_voiced(sample)

Ahoj pyAudioAnalysis má funkci odstranění ticha.

V této knihovně může být odstranění ticha tak jednoduché:

from pyAudioAnalysis import audioBasicIO as aIO from pyAudioAnalysis import audioSegmentation as aS [Fs, x] = aIO.readAudioFile("data/recording1.wav") segments = aS.silenceRemoval(x, Fs, 0.020, 0.020, smoothWindow = 1.0, Weight = 0.3, plot = True)

Interně ztišit removal() následuje částečně kontrolovaný přístup:nejprve je trénován model SVM, aby rozlišoval mezi vysokoenergetickými a nízkoenergetickými krátkodobými snímky. K tomuto účelu se využívá 10 % rámců s nejvyšší energií spolu s 10 % rámců s nejnižšími energiemi. Poté je SVM aplikován (s pravděpodobnostním výstupem) na celý záznam a k detekci aktivních segmentů je použito dynamické prahování.


Linux
  1. Co znamená „rc“ v .bashrc?

  2. K čemu jsou Inody dobré?

  3. Jaké jsou dobré knihy o Linuxu/Unixu pro pokročilé uživatele?

  1. K čemu slouží soubor .la libtool?

  2. Potřebujete dobrý hex editor pro Linux

  3. Jaký je dobrý přístup k extrahování částí řeči z libovolného zvukového souboru?

  1. Co je soubor .so.2?

  2. Jaké je dobré řešení pro označování souborů v linuxu?

  3. Jaký je dobrý prohlížeč souborů CHM pro (Fedora) Linux?