앎을 경계하기

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

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

양갱맨 2019. 11. 5. 01:14

 

 

 

 

일단 오디오 데이터가 가지고 있는 정보를 서술하기 전에 신호처리 알못이라서 예제에 나와있는 단어들부터 파악하려고 한다.

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

 

샘플레이트(sample rate)와 비트뎁스(bit depth)는 무엇인가

    간 혹, 샘플레이트와 비트뎁스(비트 심도)가 음질과 어떤 관련이 있는지에 대해서 질문을 받는 경우가 있습니다. 특히나 각종 음원싸이트에서 [마스터링 퀄리티 음원] 등등의 서비스를 내세우기 시작하면서 많은 분들이 관심을 갖기 시작했지요.  자세히 뜯어보면 이런 마케팅은 눈속임+귀속임인 경우가 많습니다. 사기다 이 말 입니다.    샘플레이트 라는것은.…

logicstar.kr

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개의 레전드를 표현하자니 보기 안좋고, 각각 따로 그래프를 그려봤는데 익숙하지 않아서 그런지 잘 안나와서 그냥 한 곳에 다 그려봤다. 확실하게 차이가 있는것을 확인할 수 있었다.

 

 

http://www.dafit.me

 

[DF903] 음성 단어 분류기 알고리즘 구현 : 다핏, 데이터사이언스 연습문제

🔥 문제 설명 음성 명령어 데이터셋를 활용하여 음성 단어 분류기 알고리즘을 직접 구현해보는 문제입니다. 명령어 데이터셋을 통하여 간단한 단어 단위의 음성을 분류하는 모델을 개발할 수 있도록 하는 것이 목적입니다.튜토리얼적인 딥러닝 모델을 구현할 수 있는 사람도 차근차근 해결할 수 있게끔 제작되었습니다. 마이크를 통해 데모 버전까지 구현하는 것을 목표로 하였으나, 하드웨어와 신호처리 도메인 지식의 요구로 인하여 알고리즘까지로 한정하였습니다. 엔지니어링을 다

www.dafit.me