7.1.2チャンネルのスピーカーのテストトーンを、Windows Sonic for Headphonesを「オン」にして録音した場合と「オフ」にして録音した場合の録音データを分析し、比較することによって、Windows Sonic for Headphonesの音声処理の仕組みの一部を知ることができました。
Windows Sonic for Headphonesを「オン」にして録音した場合と「オフ」にして録音した場合の録音データの間には明らかに違いが見られます。
つまり、Windows Sonic for Headphonesを「オン」にした場合と「オフ」にした場合では、ヘッドホンやイヤホンから聴こえてくる音声には明らかな違いがあるということになります。
横軸が音声の周波数、縦軸が音声のレベルのスペクトル解析の結果(Spectrum)を見ると、Windows Sonic for Headphonesが頭部伝達関数(HRTF)を利用して、音声を処理している様子を知ることができます(図1a,b)。
青の線がレフトチャンネルの録音、赤の線がライトチャンネルの録音です。つまり、青の音声は左耳に、赤の音声は右耳に聴こえている、ということになります。
図1a:Windows Sonic 「オン」の場合のFront Leftスピーカーの音声の録音 |
図1b:Windows Sonic 「オフ」の場合のFront Leftスピーカーの音声の録音 |
Windows Sonic for Headphonesを「オン」にして録音したフロントレフトのスピーカーのテストトーンの録音では、LeftとRightのチャンネルの両方に音声が見られるだけではありません。図1aでわかるように、スペクトル解析で見た周波数帯別の音声レベルに特徴が見られます。
Windows Sonic for Headphonesが「オン」の場合、周波数帯によって音声レベルの凹凸が見られますが(図1a)、この凹凸の特徴が「頭部伝達関数(HRTF)」を示しているようです。
一方、Windows Sonic for Headphonesが「オフ」の場合は、音声レベルの凹凸は全く見られません(図1b)。また、「オフ」の場合は、Leftチャンネルにしか音声は録音されていません。
図1aのような周波数帯別の凹凸の特徴がある音声を聴くと、音源がフロントレフトのスピーカーの方向にあると感じるようになっている、というのが頭部伝達関数を利用した音声処理の仕組みです。なお、実際には、「時間差」の要因も利用されています。
人間が、音声の周波数、レベル、時間差などを利用して音源の方向を判断していることを利用して、Windows Sonic for Headphonesは音声データを処理しています。そのような仕組みは、頭部伝達関数(HRTF)として分析されています。
残念ながら、頭部伝達関数(HRTF)には個人差があるので、Windows Sonic for Headphonesの頭部伝達関数(HRTF)が合わない人にとっては、効果が弱かったり、音源の方向を誤って判断することもあると思われます。個人差に合わせて、周波数帯の特性などを微調整できるような仕組みを備えてほしいと思います。
今回は、「時間差」の要因については見ていませんが、スペクトル解析図で、処理された音声の周波数とレベルの特徴がわかり、Windows Sonic for Headphonesの音声処理の一側面を知ることができたと思います。
「時間差」の要因については、「その2」の記事で触れていますので、ご覧ください。
------------------------------------------------------------------
<スペクトル解析図について>
スペクトル解析図の横軸は、音声の周波数(Frequency)ですが、この図では左側が低音、右側が高音になります。人間の可聴周波数帯域はおおよそ「20Hz~20000Hz」と言われています。ちなみに、ハイレゾの音声は、「20000Hz」をはるかに上回る周波数帯域の音声を含んでいます。
スペクトル図の縦軸は、音声のレベルです。低周波数のレベルが大きいので、対数スケールにしています。
------------------------------------------------------------------
☆関連記事
◆コンテンツ(音源)が左右する、Windows Sonic for Headphonesの効果:How "Windows Sonic for Headphones” looks like.:その1
◆コンテンツ(音源)が左右する、Windows Sonic for Headphonesの効果:How "Windows Sonic for Headphones” looks like.:その2
<図表:Windows Sonic for Headphonesが「オン」の場合>
周波数帯別の凹凸の特徴は、フロントレフトスピーカーの場合とそれ以外の場合で分かれています。「サイド」「バック」「トップ」の3つのスピーカーの周波数帯別凹凸の特徴はほとんど同じです。
青の線がレフトチャンネルの録音、赤の線がライトチャンネルの録音です。青の音声は左耳に、赤の音声は右耳に聴こえている、ということになります。
フロントレフトスピーカーの音声 |
センタースピーカーの音声 |
サイドレフトスピーカーの音声 |
バックレフトスピーカーの音声 |
トップレフトスピーカーの音声 |
サブウーファーの音声<図表:Windows Sonic for Headphonesが「オフ」の場合> |
フロントレフトスピーカーの音声 |
センタースピーカーの音声 |
サイドレフトスピーカー |
バックレフトスピーカーの音声 |
トップレフトスピーカーの音声 |
|
----------------------------------------------------------
付録:スペクトル解析結果のグラフ作成用「R」コードの例
付録:スペクトル解析結果のグラフ作成用「R」コードの例
Audacityで録音した音声ファイルを「R」に読み込めるので、分析やグラフ作成まで「R」で処理することができます。
library(soundgen)
library(seewave)
library(tuneR)
library(ggplot2)
wdat <- readWave("712winsonic.wav") #録音したwavファイルの読み込み
wdatL<-channel(wdat,"left") #レフトチャンネルを抽出
wdatR<-channel(wdat,"right") #ライトチャンネルを抽出
st <- 5 #解析処理対象の開始時間(秒)
et <- 10 #解析処理対象の終了時間(秒)
#左右のチャンネルの周波数帯別解析結果をマトリックスデータに保存し、列名をつける
d_l <- meanspec(wdatL,from=st,to=et, f = 48000, norm=FALSE,correction = "energy", flim = c(0, 20), col="blue")
d_l <- meanspec(wdatL,from=st,to=et, f = 48000, norm=FALSE,correction = "energy", flim = c(0, 20), col="blue")
colnames(d_l) <- c("Frequency", "dB_L")
d_r <- meanspec(wdatR,from=st,to=et, f = 48000, norm=FALSE,correction = "energy", flim = c(0, 20), col="red")
colnames(d_r) <- c("Frequency1", "dB_R")
d_lr <- cbind(d_l,d_r) #左右チャンネルのデータを結合
d_lr <- as.data.frame(d_lr) #データフレーム形式に変換
#左右のチャンネルのグラフを一つの図の上に描く
glr <- ggplot(d_lr, aes(x=Frequency)) + geom_line(aes(y = dB_L,color = "dB_L"))
glr <- glr + geom_line(aes(y = dB_R, color = "dB_R"))
glr <- glr + scale_color_manual(values = c("blue","red"))+ggtitle("Spectrum : Front Left") + ylab("Energy(log2)") + labs(color = "Channel")+ scale_y_continuous(trans = 'log2')
plot(glr)
----------------------------------------------------------
0 件のコメント:
コメントを投稿