일단 오디오 데이터가 가지고 있는 정보를 서술하기 전에 신호처리 알못이라서 예제에 나와있는 단어들부터 파악하려고 한다.
Sampling Rate는 sampling frequency라고도 하고 이산적인 신호를 만들기 위해 연속적 신호에서 얻어진 단위시간 당 샘플링 횟수를 말한다. 단위는 헤르츠이다.
(음.. 디지털 신호로 만들기 위해서 아날로그 신호에서 초당 샘플링한 횟수를 sampling rate라고 생각해도 되는걸까..?)
bit depth는 음의 세기? 강도를 얼마나 세세하게 표현할 수 있냐라는것.
이 사이트를 보니 sample rate와 bit depth에 대해 잘 이해되게 설명해놨다.
https://logicstar.kr/bbs/board.php?bo_table=gt_3_8&wr_id=23&sst=wr_hit&sod=desc&sop=and&page=1
903_02 문제의 힌트를 보니 Numpy, matplotlib, librosa 라이브러리를 참고하라고했다.
librosa는 sound file을 다루기 위한 라이브러리이다.
import librosa
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from collections import deque
import os
일단 데이터 종류가 폴더별로 나눠져 있기 때문에 각 디렉토리 리스트를 가져왔다.
# 데이터 종류를 알기 위해 디렉토리 리스트 가져오기
path = './train'
folder_list = os.listdir(path)
print("list = {}".format(folder_list))
모든 파일을 읽기엔 오래걸려서 각 폴더의 첫번째 파일을 읽어서
폴더명 , 파일명, 파일사이즈, 음원길이, 파형, 샘플링레이트를 출력한다.
fname = []
ylist = []
srlist = []
fsize = []
duration = []
for folder in folder_list:
fpath = librosa.util.find_files(path+'/'+folder) #폴더 내 음원파일경로 반환
fsize.append(os.path.getsize(fpath[0]))
y, sr = librosa.load(fpath[0]) # 각 폴더의 첫번째 음원파일읽기
duration.append(librosa.core.get_duration(y=y,sr=sr,filename=fpath[0]))
fname.append(fpath[0].split('\\')[-1])
ylist.append(y)
srlist.append(sr)
위 결과를 보니 딱히 각 종류별 음성마다 뭐가 다른지 잘모르겠다.
matplotlib 사용해서 파형을 시각화해봤다.
30개의 레전드를 표현하자니 보기 안좋고, 각각 따로 그래프를 그려봤는데 익숙하지 않아서 그런지 잘 안나와서 그냥 한 곳에 다 그려봤다. 확실하게 차이가 있는것을 확인할 수 있었다.
'DAFIT > 903 - 음성단어 분류 알고리즘' 카테고리의 다른 글
<DAFIT> 03 음성 단어 분류기 알고리즘 구현 04 - 오디오 데이터의 이해과정 문제 (0) | 2019.11.08 |
---|---|
<DAFIT> 03 음성 단어 분류기 알고리즘 구현 03 - 오디오 데이터의 이해과정 문제 (0) | 2019.11.05 |
<DAFIT> 03 음성 단어 분류기 알고리즘 구현 - 01 데이터 셋 준비 과정 (0) | 2019.10.29 |