2016-11-06 3 views
1

현재 MFCC 기능을 추출하기 위해 회귀 네트워크를 사용하려고합니다. 입력에 대한 네트워크 샘플링 및 프레임 된 오디오 파일, 일부 문제가있는 것, 또는 일관된 출력을 얻을 수있는 방식으로 - 일관된 프레임 크기를 의미합니다. 입력으로 작동하지 않습니다. 신경 네트워크.별도의 오디오 파일간에 프레임 크기를 일관되게 유지하려면 어떻게해야합니까?

나는 현재 샘플링과 같은 각 오디오 파일을 프레임 오전 :

def load_sound_files(file_paths , data_input): 
    raw_sounds = [] 
    data_output = [] 
    for fp in file_paths: 
     y,sr = librosa.load(fp) 
     X = librosa.util.frame(y) 
     raw_sounds.append(X) 
    return raw_sounds 

각 오디오 목록에 추가됩니다 것을 의미하고, 각 목록 내에서 프레임이 오디오 파일이있는 배열입니다.

[array([[frame],[frame],...,[frame]],dtype=float32), ...] 

나는이

print raw_sounds[0].shape 
print raw_sounds[1].shape 

인쇄를 시도하고이 결과

(2048, 121) 
(2048, 96) 

있어 그런데 왜 나는이 결과는 무엇입니까? 프레이밍 옵션과 관련된 사항을 변경하지 않으므로 다른 이유는 무엇입니까?

일관성을 유지할 방법이 없다면 입력을 일관성없이 사용하여 신경망을 어떻게 훈련시킬 수 있습니까?

답변

1

귀하의 결과

(2048, 121) 
(2048, 96) 

는 프레임 길이와 프레임 수를 제공합니다. 그래서 프레임 크기는 실제로 일관되게 2048 샘플 길이입니다. 이 둘의 유일한 차이점은 첫 번째 사운드 파일에는 121 프레임, 두 번째 사운드 파일에는 96 프레임이 있다는 것입니다.

0

오디오 파일은 길이가 다른 시퀀스입니다.

가변 길이 입력을 처리하는 방법은 여러 가지가 있습니다. 일반적으로 고정 치수 인 입력을 각 오디오 프레임에 대해 한 번 신경망에 여러 번 입력합니다. 그런 다음 네트워크는 RNN, LSTM 또는 seq2seq와 같은 아키텍처를 사용하여 시퀀스로부터 학습합니다 (이는 플럭스에 있지만 contrib/seq2seq에 있음). 간단한 DNN (피드 포워드) 아키텍처를 사용할 수도 있습니다.