위대한 쇼맨 OST "Rewrite the stars" 의 노래 뒷부분 1분의 주파수 스펙트럼 결과
graphics.off()
# MP4 파일을 WAV 파일로 변환
install.packages("tuneR")
install.packages("av")
library(tuneR)
library(av)
# 파일 경로 설정
mp4_file <- "c:\\data\\Rewrite the stars.mp4"
wav_file <- "c:\\data\\Rewrite the stars.wav"
# MP4 파일을 WAV 파일로 변환
av_audio_convert(mp4_file, wav_file)
# 변환된 파일을 확인
if (file.exists(wav_file)) {
cat("변환이 성공적으로 완료되었습니다:", wav_file, "\n")
} else {
cat("변환에 실패했습니다.\n")
}
play(wav_file)
# 1. 앞부분만 잘라내기
library(tuneR)
# 음성 파일을 읽어옴
file_path <- "Rewrite the stars.wav"
sample_wave <- readWave(file_path)
# 음성 신호와 샘플링 속도 추출
audio_samples <- sample_wave@left
sample_rate <- sample_wave@samp.rate
# 1분 10초(70초)에 해당하는 샘플 수 계산
duration_sec <- 70 # 1분 = 60초
num_samples <- duration_sec * sample_rate
total_samples <- length(audio_samples)
# 앞부분 1분의 음원만 잘라내기
if (num_samples > total_samples) {
stop("The file is shorter than 1 minute.")
}
trimmed_samples <- audio_samples[(total_samples - num_samples) : total_samples]
# 새로운 Wave 객체 생성
trimmed_wave <- Wave(left = trimmed_samples, samp.rate = sample_rate, bit = sample_wave@bit)
# 새로운 파일로 저장
writeWave(trimmed_wave, "Rewrite the stars_trimmed.wav")
# 결과 확인
cat("The first 1 minute of the audio has been trimmed and saved as 'Rewrite the stars_trimmed.wav'\n")
# 필요한 패키지 설치 및 로드
install.packages("seewave")
library(tuneR)
library(seewave)
# 음성 파일을 읽어옴
sample_wave <- readWave("Rewrite the stars_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), main="Rewrite the stars" )
# audio_samples : 분석할 소리
# fastdisp=TRUE : 빠른 디스플레이 모드를 사용. 그래프를 더 빠르게 렌더링하겠다
# f = sample_rate : 샘플링 주파수를 설정
# ovlp = 50 : 오버랩을 50% 겹치게 해서 스펙트럼의 시간 해상도를 높이게 해줌 (그래프 잘 나오게 하려는 목적)
# collevels = seq(-40, 0, 1) : 색상 지정. -40db ~ 0db 까지 1db 간격으로 색상 레벨을 지정하겠다.