2011-11-27 2 views

Odpowiedz

18

Jest to możliwe dzięki Shout toolkit: http://shout-toolkit.sourceforge.net/index.html

Jest napisany w języku C++ i przetestowane na Linuksie, ale powinna również działać pod kontrolą systemu Windows lub OSX.

Zestaw narzędzi był produktem ubocznym moich badań doktoranckich dotyczących automatycznego rozpoznawania mowy (ASR). Używanie go do samego ASR nie jest może tak proste, ale dla Wykrywania Aktywności Mowy (SAD) i diaryzacji (znajdowania mowy dla jednej konkretnej osoby) jest dość łatwy w użyciu. Oto przykład:

  1. Utwórz plik audio pcm z nagłówkiem 16 kHz, 16 bitów, little-endian, mono. Używam ffmpeg do tworzenia plików raw: ffmpeg -i [INPUT_FILE] -vn -acodec pcm_s16le -ar 16000 -ac 1 -f s16le [RAW_FILE] Prefiks danych bez nagłówków z małym zakodowanym rozmiarami endianów (4 bajty). Upewnij się, że plik ma rozszerzenie .raw, ponieważ shout_cluster wykrywa typ pliku na podstawie rozszerzenia.

  2. Wykonaj segmentacji mowy/non-mowy: ./shout_segment -a [RAW_FILE] -ams [SHOUT_SAD_MODEL] -morfolina [SAD_OUTPUT] Plik wyjściowy zapewni Ci segmentach, w których ktoś mówi (oznaczonych z "SPEECH". Oczywiście, ponieważ wszystko odbywa się automatycznie, system może popełniać błędy ..), w którym jest dźwięk, który nie jest mową ("SOUND") lub milczeniem ("SILENCE").

  3. Wykonaj diarization: ./shout_cluster -a [RAW_FILE] -morfolina [DIARIZATION_OUTPUT] -mi [SAD_OUTPUT] Korzystanie wyjście shout_segment, będzie starał się ustalić, ile głośniki były aktywne w nagraniu , oznacz każdy głośnik ("SPK01", "SPK02" itp.), a następnie znajdź wszystkie segmenty mowy każdego z głośników.

Mam nadzieję, że to pomoże!

+0

Dziękuję za odpowiedź, Marijn, a dla notowań krokach! Czy ten język jest niezależny, tzn. Może pracować w języku hebrajskim, japońskim i tak dalej?(zaskakująco, te "prawdopodobnie wybrane do tego przykładu, ponieważ są tak egzotycznymi językami" są dokładnie tymi językami potrzebnymi :) – Avi

+0

Właśnie użyłem tych poleceń i terminala po prostu zamrożone na drugim poleceniu. Ubuntu 17.10. Może dlatego, że nie zrobiłem nic na temat tej instrukcji: "Przedrostuj dane bez nagłówków z małym zakodowanym rozmiarami endianów (4 bajty)". Czy tak jest? Jak mogę to zrobić? – Roman

2

Chociaż powyższa odpowiedź jest prawidłowa, mam do czynienia z problemem instalacji występującym w systemie Linux podczas instalacji SHoUT. undefined reference to pthread_join którego rozwiązanie znalazłem otworzyć configure-make.sh od instalacji Shout zip i zmodyfikować linię

CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-lpthread" ../configure 

do

CXXFLAGS="-O3 -funroll-loops -mfpmath=sse -msse -msse2" LDFLAGS="-pthread" ../configure 

UWAGAlpthread aby zmienić na pthread w systemach Linux.

OS: Linux Mint 18 gdzie wersja krzyczeć: release-2010-wersja-0-3

+0

Dzięki za odpowiedź, człowieku! Czy udało ci się w końcu coś rozpoznać? – Roman

+0

Z SHoUT-no, przełączyłem się na Pythona, ponieważ miał lepsze wsparcie dla analizy audio. –