앎을 경계하기

DAFIT/903 - 음성단어 분류 알고리즘

<DAFIT> 03 음성 단어 분류기 알고리즘 구현 04 - 오디오 데이터의 이해과정 문제

양갱맨 2019. 11. 8. 01:08

이번에는 03에서 그렸던 파형을 normalization한 데이터로 다시 한번 그려서 비교하고 차이점을 서술하는 문제이다.

import wave
import numpy as np
import matplotlib.pyplot as plt

filepath = './train/bed/004ae714_nohash_1.wav'
sound = wave.open(filepath)

파일은 004ae714_nohash_1.wave를 사용했다.

signal = sound.readframes(-1)
signal = np.fromstring(signal, 'Int16')

fs = sound.getframerate()
Time=np.linspace(0, len(signal)/fs, num=len(signal))
print(signal)
print(signal.shape)
plt.plot(Time,signal)

getframerate()는 샘플링빈도를 반환한다. 이 파일의 샘플링 빈도는 16000이다.

파형은 다음과 같이 그려진다.

normalization을 해보자

식은 (변수-평균)/표준편차이다.

mean = np.mean(signal)
std = np.std(signal)
signal = (signal-mean)/std
print(signal)
print(signal.shape)

정규화하기 전과 signal의 값의 크기가 차이가 있다.

fs = sound.getframerate() # 샘플링 빈도 반환
Time=np.linspace(0, len(signal)/fs, num=len(signal))
plt.plot(Time, signal)

파형을 그려보면

다음과 같이 그려진다.

기존 파형                                                                                        정규화한 파형

 

두 파형의 차이점은 y축이다.

샘플값의 폭이 굉장히 컸었는데 정규화를 통해 작아진 것을 확인할 수 있다.