◆Dolby Atmos「Amaze」トレーラーの録音データの分析:Windows Sonic for Headphones、Dolby Atmos for Headphonesを「オン」にした場合と「オフ」にした場合の比較
Dolby Atmosの「Amaze」トレーラーの録音データの分析をしてみました。 Winsows10のパソコンで、Windows Sonic for Headphones、Dolby Atmos for Headphonesを「オン」にした場合と「オフ」にした場合のトレーラーの録音データの比較です。 Windows Sonic for Headphones、Dolby Atmos for Headphonesを「オン」にした場合の録音データの波形は振れ幅が大きく、迫力のある音声であることがわかります。耳にダメージを与えないように、音量を上げ過ぎないように注意する必要があります。 録音データの波形は、Windows Sonic for Headphones、Dolby Atmos for Headphonesを「オン」にすると、Netflixの5.1ch音声をより迫力ある音声で楽しめることを明らかに示しています。図1:Windows Sonic for Headphonesを「オン」にして録音した場合図2:Dolby Atmos for Headphonesを「オン」にして録音した場合図3:立体音響を「オフ」にして録音した場合(ステレオモード再生) スペクトル解析の結果などのより詳細な情報やグラフは、「こちらの記事(Blogger の記事)」にあります。MHC-001-BK ミミマモ ストレッチ・ヘッドホンカバー(ブラック・1セット)【Mサイズ オンイヤータイプ向け】 MIMIMAMO価格:2160円(税別、送料別)(2019/10/10時点)楽天で購入heddo ヘッドホンのイヤーパッドが劣化したらこのカバーが役立ちます<付録:録音データ分析用の「Rコード例」> 音声データの「R」での分析コードは、ネット上であまり見かけないので、自己流の拙いものですが、備忘録として記しておきます。「テストトーン」の分析用のコードをベースにしています。 最も注意を要したのは、「コード」以前に、分析対象区間を秒数で指定するので、録音データの尺をできるだけそろえることでした。 冒頭の不要な無音部分を手動でカットしたので、尺が合うようにするのに留意しました。-----------------------------------------------library("soundgen")library(seewave)library(tuneR)library(ggplot2)library(tidyr)library(dplyr)library(plyr)library(data.table)sctrans <- data.frame(Scene = c(1, 2, 3, 4, 5), SCNAME = c("Opening", "Woods", "Thunder", "Rain", "Ending"))wdat <- readWave("amaze_winsonic.wav")wdatL<-channel(wdat,"left")wdatR<-channel(wdat,"right")amaL1<-cutw(wdatL,from=0,to=11.5)amaL2<-cutw(wdatL,from=11.5,to=24)amaL3<-cutw(wdatL,from=24,to=39)amaL4<-cutw(wdatL,from=39,to=47)amaL5<-cutw(wdatL,from=47,to=58.5)amaR1<-cutw(wdatR,from=0,to=11.5)amaR2<-cutw(wdatR,from=11.5,to=24)amaR3<-cutw(wdatR,from=24,to=39)amaR4<-cutw(wdatR,from=39,to=47)amaR5<-cutw(wdatR,from=47,to=58.5)df_lr <- NULLi = 0for(i in 1:5){ amal <- get(paste("amaL",i,sep=""))amaR <- get(paste("amaR",i,sep="")) d_l <- meanspec(amal, f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="blue") colnames(d_l) <- c("Frequency", "Left") d_r <- meanspec(amaR, f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="red") colnames(d_r) <- c("Frequency1", "Right") d_lr <- cbind(d_l,d_r) d_lr <- as.data.frame(d_lr) d_lr$Scene <- as.integer(i) d_lr$Sound_File <- as.character("WinSonic") df_lr <- rbind(df_lr,d_lr)} tail(df_lr)wdf_lr <- df_lrddat <- readWave("amaze_dolby.wav")ddatL<-channel(ddat,"left")ddatR<-channel(ddat,"right")amaL1<-cutw(ddatL,from=0,to=11.5)amaL2<-cutw(ddatL,from=11.5,to=24)amaL3<-cutw(ddatL,from=24,to=39)amaL4<-cutw(ddatL,from=39,to=47)amaL5<-cutw(ddatL,from=47,to=58.5)amaR1<-cutw(ddatR,from=0,to=11.5)amaR2<-cutw(ddatR,from=11.5,to=24)amaR3<-cutw(ddatR,from=24,to=39)amaR4<-cutw(ddatR,from=39,to=47)amaR5<-cutw(ddatR,from=47,to=58.5)df_lr <- NULLi = 0for(i in 1:5){ amal <- get(paste("amaL",i,sep=""))amaR <- get(paste("amaR",i,sep=""))d_l <- meanspec(amal, f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="blue")colnames(d_l) <- c("Frequency", "Left") d_r <- meanspec(amaR, f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="red")colnames(d_r) <- c("Frequency1", "Right")d_lr <- cbind(d_l,d_r)d_lr <- as.data.frame(d_lr)d_lr$Scene <- as.integer(i)d_lr$Sound_File <- as.character("DolbyAtmos")df_lr <- rbind(df_lr,d_lr)}tail(df_lr)ddf_lr <- df_lrsdat <- readWave("amzestmodestereo.wav")sdatL<-channel(sdat,"left")sdatR<-channel(sdat,"right")amaL1<-cutw(sdatL,from=0,to=11.5)amaL2<-cutw(sdatL,from=11.5,to=24)amaL3<-cutw(sdatL,from=24,to=39)amaL4<-cutw(sdatL,from=39,to=47)amaL5<-cutw(sdatL,from=47,to=58.5)amaR1<-cutw(sdatR,from=0,to=11.5)amaR2<-cutw(sdatR,from=11.5,to=24)amaR3<-cutw(sdatR,from=24,to=39)amaR4<-cutw(sdatR,from=39,to=47)amaR5<-cutw(sdatR,from=47,to=58.5)df_lr <- NULLi=0for(i in 1:5){amal <- get(paste("amaL",i,sep=""))amaR <- get(paste("amaR",i,sep=""))d_l <- meanspec(amal,f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="blue")colnames(d_l) <- c("Frequency", "Left") d_r <- meanspec(amaR,f = 48000,norm=FALSE,correction = "energy", flim = c(0, 20), col="red")colnames(d_r) <- c("Frequency1", "Right")d_lr <- cbind(d_l,d_r)d_lr <- as.data.frame(d_lr)d_lr$Scene <- as.integer(i)d_lr$Sound_File <- as.character("Stereo")df_lr <- rbind(df_lr,d_lr)}tail(df_lr)sdf_lr <- df_lrswddf_lr <- rbind(wdf_lr,ddf_lr,sdf_lr)tail(swddf_lr)for(i in 1:5){ td_lr <-select(swddf_lr,Frequency,Left,Right,Sound_File,Scene) %>% filter(Scene == i) swddf_lr1 <- join(td_lr,sctrans,by="Scene") swddf_lr1$SCNAME <-as.character(swddf_lr1$SCNAME)g <- ggplot(data = swddf_lr1) + geom_line(aes(x=Frequency,y=Left,group=Sound_File, colour=Sound_File)) + xlim(0,20) + labs(x="Frequency(kHz)",y="Energy(log2)") + labs(title="Left Speaker") + scale_y_continuous(trans = 'log2')g1 <- g + facet_wrap(~SCNAME)ggsave(file=paste0("aml",i,".png"),plot(g1),dpi = 200, width = 7.2, height = 4.8)print(g1)g <- ggplot(data = swddf_lr1) + geom_line(aes(x=Frequency,y=Right,group=Sound_File, colour=Sound_File)) + xlim(0,20) + labs(x="Frequency(kHz)",y="Energy(log2)") + labs(title="Right Speaker") + scale_y_continuous(trans = 'log2')g1 <- g + facet_wrap(~SCNAME)ggsave(file=paste0("amr",i,".png"),plot(g1),dpi = 200, width = 7.2, height = 4.8)print(g1)}swddf_lrw <- select(swddf_lr,Frequency,Left,Right,Sound_File,Scene) %>% filter(Sound_File == "WinSonic")for(i in 1:5){ td_lr <-select(swddf_lr,Frequency,Left,Right,Sound_File,Scene) %>% filter(Scene == i) swddf_lrw <- join(td_lr,sctrans,by="Scene") swddf_lrw$SCNAME <-as.character(swddf_lrw$SCNAME) glrw <- ggplot(swddf_lrw, aes(x=Frequency)) + geom_line(aes(y = Left,color="Left")) glrw <- glrw + geom_line(aes(y = Right,color="Right")) glrw <- glrw + scale_color_manual(values = c("blue","red"))+ggtitle("WinSonic") + labs(x="Frequency(kHz)",y="Energy") + labs(color = "Channel")+ scale_y_continuous(trans = 'log10') + facet_wrap(~SCNAME)plot(glrw)}-------------------------------------------------------------