Windows10のパソコンで、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにすると、Dolby AtmosやDolby Digital Plusなどのサラウンドサウンドを普通のヘッドホンで楽しむことができるようになります。
Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにすると、音響空間が広くなった感じがしたり、迫力ある重低音を聴くことができたりします。
◆Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにした場合の音響効果の視覚化
音響の効果をことばで説明するのは難しく、そもそも音声の聴こえ方は個人差があり、抽象的で主観的な評価になってしまいます。
そこで、Windows Sonic for HeadphonesやDolby Atmos for Headphonesの効果を具体的、客観的に示すために録音データの分析を行いました。
Dolby Atmosのデモトレーラーの音声をWindows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにして録音したデータと、オフにして録音したデータの波形などの特徴を比べてみました。
dolby-atmos-trailer_amaze_1080.mp4 |
Dolby Atmosのデモトレーラー「dolby-atmos-trailer_amaze_1080.mp4」の動画は、ドルビー社のサイトからダウンロードできます。
「Amaze」は約1分の動画で、いろいろな森の音や雷鳴、雨音などの自然の音が入っています。
米国のアマゾン・プライム・ビデオにもこのトレーラーがありました。現在は利用できなくなっていますが、ページは残っていました。ヘッドホンで聴くようにとのことです。
Dolby Atmosのオブジェクトベース形式の音源を再生できる動画再生アプリはほとんどないので、一般的な動画再生アプリで再生して、ヘッドホンで聴いた時に「Dolby Atmosらしく聴こえる」ように構成されているのだと思います。
VLCメディアプレーヤーで「Amaze」を再生し、その音声をAudacityで録音しました。
VLCメディアプレーヤーでは、「Amaze」のコーデック情報が「3F2M/LFE(3つのフロントスピーカー、2つのミドルスピーカー、サブウーファー)」という表示なので、「Amaze」の音声は、5.1chの音声として作成されているようです。
下の録音データの波形図から、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにした場合の効果がわかると思います。
図3a,bは、Windows Sonic for Headphones、Dolby Atmos for Headphonesをオフにして録音したものです。図1、図2と比べて、波形の振れ幅が明らかに小さくなっています。実際に聴いてみても、「オフ」の場合は明らかに迫力に欠ける音声です。
特に、図2のDolby Atmos for Headphonesの場合は、「雷鳴」や「重低音」の部分の波形がWindows Sonic for Headphonesよりも大きくなっています。トレーラーに「POWERFUL BASS」という表示があるように、再生すると重低音が響いています。耳にダメージを与えないように音量を上げ過ぎないように注意する必要があります。
なお、図3aと図3bの違いは、VLCメディアプレーヤーのスピーカーモードの設定で「オリジナルモード」に設定した場合(図3a)と「ステレオモード」に設定した場合(図3b)の違いです。「オリジナルモード」の場合は、5.1ch音声を2chステレオで再生していることになり、「ステレオモード」の場合は、5.1ch音声を2ch音声にしたものを2chステレオで再生していることになると思います。つまり、2chステレオで再生する場合は、VLCメディアプレーヤーを「ステレオモード」にした方がよいと思われます。
実際に聴いてみると、雷鳴の部分などは「ステレオモード」設定での再生の方がよい感じです。
とりあえず、パソコンで5.1ch音声を利用できるNetflixの映画やドラマは、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにして観るのがよいと思います。
少なくとも、重低音の迫力は格段に増加します。そして、重低音については、波形の振れ幅からすると、Dolby Atmos for Headphonesの方がパワフルな音声のようです。
波形はWindows Sonic for Headphones |
図1:Windows Sonic for Headphones |
図2:Dolby Atmos for Headphones |
図3a:Stereo(オリジナルモード再生) |
図3b:Stereo(ステレオモード再生) |
◆スペクトル解析結果で見るWindows Sonic for Headphones、Dolby Atmos for Headphonesの「効果」
Windows Sonic for Headphones、Dolby Atmos for Headphonesをオンにして録音した場合は、オフの場合よりも音声レベルが全体的に高水準になっています。なお、「オフ」の場合の録音は、上の図3bの「ステレオモード」再生設定での録音です。
Windows Sonic for Headphones、Dolby Atmos for Headphonesの「オン」と「オフ」を比べると、特に、雷鳴や雨音でかなり差が大きくなっています。
実際に聴き比べてみても、森の中の音や雷鳴、雨音などはかなり違いのある音声になっています。特に、「雷鳴」は全く異なる音だと言えると思いますが、そのことがスペクトル解析の結果でも確認することができました。
Netflixで5.1ch音声の映画やドラマを観る時には、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにしないと、とてももったいないと思います。
Windows10のパソコンでは、「Netflixアプリ」を利用し、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにして視聴するのが正解でしょう。
なお、Windows Sonic for Headphones、Dolby Atmos for Headphonesをオンにした場合のスペクトル解析の結果に凹凸が多いのは、頭部伝達関数(HRTF)を利用した音声処理をしているからだと考えられます。
では、Windows Sonic for HeadphonesとDolby Atmos for Headphonesのどちらがいいのかは、よくわかりません。可聴音域(20Hz~20kHz)ではWindows Sonic for Headphonesの音声レベルの方が高くなっているようです。
☆関連記事
◆やっぱり、Windowsパソコンで、Netflixを観る時に、Windows Sonic for HeadphonesやDolby Atmos for Headphonesをオンにする理由:「Amaze」トレーラーの録音データの分析から(その2)-----------------------------------------------------------------
------------------------------------------------------------------
<付録:「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 <- NULL
i = 0
for(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)
df_lr
wdf_lr <- df_lr
ddat <- 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 <- NULL
i = 0
for(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_lr
sdat <- 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 <- NULL
i=0
for(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_lr
swddf_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)
}
-----------------------------------------------------------------
0 件のコメント:
コメントを投稿