#1. mp3 -> wav
#2. 1분만 잘라내기
#3. 주파수 스펙트럼 그리기
install.packages("tuneR")
install.packages("av")
library(tuneR)
library(av)
# 파일 경로 설정
mp3_file <- "c:\\data\\tasty.mp3"
wav_file <- "c:\\data\\tasty.wav"
# MP3 파일을 WAV 파일로 변환
av_audio_convert(mp3_file, wav_file)
# 변환된 파일을 확인
if (file.exists(wav_file)) {
cat("변환이 성공적으로 완료되었습니다:", wav_file, "\n")
} else {
cat("변환에 실패했습니다.\n")
}
#실습2. wav 파일을 크기를 작게 잘라냄
# 1. 앞부분만 잘라내기
# 필요한 패키지 설치 및 로드
install.packages("tuneR")
library(tuneR)
# 음성 파일을 읽어옴
file_path <- "tasty.wav"
sample_wave <- readWave(file_path)
# 음성 신호와 샘플링 속도 추출
audio_samples <- sample_wave@left
sample_rate <- sample_wave@samp.rate
# 1분(60초)에 해당하는 샘플 수 계산
duration_sec <- 60 # 1분 = 60초
num_samples <- duration_sec * sample_rate
# 앞부분 1분의 음원만 잘라내기
if (num_samples > length(audio_samples)) {
stop("The file is shorter than 1 minute.")
}
trimmed_samples <- audio_samples[1:num_samples]
# 새로운 Wave 객체 생성
trimmed_wave <- Wave(left = trimmed_samples, samp.rate = sample_rate, bit = sample_wave@bit)
# 새로운 파일로 저장
writeWave(trimmed_wave, "tasty_trimmed.wav")
# 결과 확인
cat("The first 1 minute of the audio has been trimmed and saved as 'morning_trimmed.wav'\n")
#실습3. 주파수 스펙트럼으로 시각화 하기
# 필요한 패키지 설치 및 로드
install.packages("tuneR")
install.packages("seewave")
library(tuneR)
library(seewave)
# 음성 파일을 읽어옴
sample_wave <- readWave("tasty_trimmed.wav")
# 음성 신호와 샘플링 속도 추출
audio_samples <- sample_wave@left
sample_rate <- sample_wave@samp.rate
# 주파수 스펙트럼 계산 및 시각화
par(mfrow = c(1, 1)) # 그래프를 1x1 배치로 설정
spectro(audio_samples, fastdisp=TRUE, f = sample_rate, ovlp = 50, collevels = seq(-40, 0, 1))