性別や声年齢を推定しています。専門家でもないのに不見識だと叱られそうですが、実年齢との一致に拘らずに単にトレンドを知ることを目的に、この計測器に組み込んでいます。

性別判定は、声の基本周波数が手掛かりになると広く知られています。が、男女間がグラデーションになっており、はっきりとした線引きは困難です。図は、研究レポート「加齢に伴 う話声位の変化」*1(略称、SFFレポート)で提供されている男女の基本周波数の有効範囲を図示したものです。



このように、8割程度は判定できますが、140Hz~160Hzの20Hz期間すなわち残り2割は、男女の判定ができません。

声年齢についても同様に基本周波数のみで全年齢の判定が困難であることが同レポートで報告されていますが、一方、女性の声年齢推定は有意差があるなど限定的には有効だとも。
本計測器では、これらの研究成果をベースに、他の声の特徴から性別・声年齢を推定しています。

【参考ページ】

基本周波数

基本周波数は、Wikipediaで、次の様に定義されています。(一部抜粋)
基本周波数とは、信号を正弦波の合成で表したときの最も低い周波数成分の周波数を意味する。
音楽では、その最も低い音を基音と呼び、f0と表記する。
音声は音楽ではないですが、以降便宜上、基本周波数をf0とします。

f0とMPM

ブログ「周波数グループ/周波数測定の手法-MPM」でも触れましたが、音は複数の波の合成として表すことが出来ます。この合成された波のうち、最も低い周波数を持つ波がf0ということです。MPMは、元の論文によれば、このf0を検出できるとしていますが、他の分析サイトでは、f0推定に不適という報告があり、MPMの知らせる音程=周波数をf0として活用して良いか調べてみました。

f0を知る便利なツール

f0推定でググると、Audacity という無料音声編集ソフトの名前が良く出てきます。
このソフトを使って音声ファイルを読み込ませると、周波数の分布が一目でわかります。
これは、サンプル音声SV1の分布を表示したものです。

Audacityによる周波数分布
Audacityによる周波数分布

図から、最初のピークが206Hzにあることが分かります。
このツールを使って、31のサンプル結果から、
Audacity平均: 179.5 Hz
MPM平均: 192.7 Hz (80~280Hzでフィルター)

 となり、その差は13.2Hzとなりました。

MPM平均算出時にf0範囲にフィルターしていても高くなっていることが分かります。原因は、基音ではなく倍音が通知されるケースがあるためです。また、フィルターすることにも抵抗があります。


スペクトルからf0算出

ということで、MPMからの算出はあきらめ、Audacityのスペクトル+矩形Windowに倣って周波数スペクトルから求めることにします。
幸い、MPM計算途中にパワースペクトルを算出しているので、これを音声ファイル全体で累積して、最初のピークを取得してみました。

 

f0推定方法をスペクトルにした背景 => f0推定には、自己相関型(実は、MPMはこの範疇)の他に様々な提案があるようですが、スタンダードと呼べるものは無いようです。手近なAudacityの周波数解析で一般に利用されているスペクトラムアルゴリズムをベースにすることで、取得したf0の値の信ぴょう性(?)を確保できるではないかと判断しました。ここで矩形Windowを指定しているのは、MPMがスペクトルを求める際に採用しているためです。

周波数スペクトル  => いきなり数学的な話になり辟易している方も少なからずいらっしゃるかと思います。そのような方に誤解を恐れずザックリ説明しますと、 音は波で表現できるという了解の下で、この波は「異なる周波数を持つ三角関数の足し算で表現できるのだ。」と、フランスの数学者フーリエさんが唱え、証明したことが発端です。この三角関数の足し算に対し、特定の周波数を持つ三角関数を掛け算(数学では内積)すると、異なる周波数の三角関数の部分が0になり、指定した周波数だけ抽出できる。という技(?)を使って、波を各周波数成分に分解することが出来るんですね。ですから、周波数0から調べたい上限の周波数Nまで、順番に掛けていけば、各周波数の成分が抽出できて、それをグラフにしたのが周波数スペクトルという訳です。

以下は、サンプルSV1について累積スペクトルをexcelのグラフ機能で対数表示したものです。

MPM経由のパワースペクトル



凹凸が良く似たグラフになっています。最初のピークも、Audacityが206Hzに対し、209Hzを検出しています。全31のサンプルで平均をとった結果、
Audacity平均: 179.5 Hz
累積スペクトル平均: 180.8Hz
となり、その差は1.3Hzとなりましたので、この累積スペクトルから求めた最小のピークをf0として活用することにしました。

性別の推定

音声から性別判定する際、高齢男女の判別が特に困難となっているようです。f0の平均では、男性は高齢化と共に声が高くなる傾向がある一方、女性は逆に声が低くなる傾向があり、先の重なり部分の原因になっているようです。

そこで、高齢化の特徴に着目して男女のべ31名のサンプルから性差が推定できるファクターを調べてみました。


性別推定ファクター

高齢化と共に顕著になるのが、「声の艶」の衰えです。MPMでは、声の艶の指標である倍音の強度を示すピーク相関値で推定することが出来ます。これに着目し、以下の三つのファクターを検討してみました。

  1. MPMによるピーク相関値が95%以上の比率
  2. f0の性差が判定できる周波数
  3. 倍音の比率

31名のサンプルによる二つのファクターの関係を図示します。


95%以上のピーク相関 vs. 周波数


ご覧のように、まず周波数180Hzを境に男女の識別が可能ですが、赤丸の男性は、超過しています。一方、95%相関を観ると、この超過の二名は、0.07より低く観測されています。
更に、倍音の比率がほとんどの女性で50%以上です。
このことから、以下の状態が同時に満たされれば、発声者は女性、以外は男性と判定できると判断しました。
  1. f0が180Hz以上である
  2. MPM観測で、ピーク相関値が95%以上の発声比率が7%以上
  3. 倍音比率が50%以上
性差別的だとお叱りを受けそうですが、後述の声年齢推定の際に、性差による声の特徴抽出に必須となっており、ご容赦ください。

声年齢の推定

最初に申し上げてなければなりませんが、音声のみで正確に声年齢を推定することは出来ません。多くの研究がなされていますが、大雑把な範囲での推定に留まっています。
この計測器での目的は、同一人物が継続して利用し、一つの指標として活用することです。

体重計のような声の計測器
私自身、日頃タニタの体重計を利用して体内年齢を測定しています。表示する結果が実年齢よりも低く表示されれば喜ばしいですが、それよりも重要なのはトレンドですね。日々、健康維持に努めていれば、この体内年齢も呼応し改善していきます。声年齢推定も、そのように使えれば、という思いで実装しています。

声年齢推定の因子

日本音響学会誌に掲載された「音声と話者の相関関係について」*1によると、因子は、
  • F0の高低
  • 調音の正確さ
  • 話す速度
  • 音質(クリアか気息性か、嗄声
  • 休止時間
という分析が海外の研究にあるとのことです。ただし、どの因子が決定的かというのは年齢によって異なるそうですが、その関係性についての詳細には触れていません。
また、別の研究では、
  • 声のふるえ
  • 声帯の緊張度
  • 空気のもれ
  • 不正確な子音の調音
  • 話す速さ
さらに、
  • F0
  • ゆらぎ
  • 高調波のSN比
という指摘もあります。
このような分析から、共通項として見えてくる因子で計測可能なものは、
  1. F0(F0の高さ)
  2. 滑舌(不正確な子音、高調波のSN比)
  3. 抑揚(声のふるえ、ゆらぎ)
  4. テンポ(話す速度、休止時間、話す速さ)
  5. 声の艶(音質、空気の漏れ、高調波のSN比)
です。


各因子と年齢の関係

ここから、4つの因子が声年齢にどのように影響しているかを推測します。
関係推測に使用した男女31名の音声サンプルは、年齢が20代から70代後半までと幅広く採っています。権利保護の立場から、詳細は示せませんが、ほとんどがYoutubeから年齢が事前に推測できる方々の音声を使用しています。

F0による声年齢ランク

F0による声年齢の推定については、冒頭のSFFレポートに、男女別の年齢群別の平均f0が報告されています。対象の被験者は異なりますが、Audacityと累積スペクトルと比較すると以下の図となります。

男女で異なる基本周波数帯域

それぞれ、f0範囲と平均を(最低f0~最高f0/平均f0)で示しました。SFFレポートが他の二つの結果と20~30Hz低く報告されていますが、これは被験者の違いやf0算出手法の違いなどが影響していると思われます。
また、SFFレポートでは、女性は年齢群と周波数に有意が認められるが、男性には認められないと結論しています。男性シニア層に若干の傾向が観られる(周波数が高くなる)ものの、ほとんど有意差がないとのことです。
従って、f0による高年齢推定は、以下のように男女で異なるアプローチをとりました。
女性: SFFレポートの年齢群に倣い、平均f0の手法による差分を考慮する
男性: 年齢と共に周波数が増加するリニアな関係を導入

こちらがf0から推定した声年齢の対応表です。 

男性のf0年齢表
f0(Hz) 声年齢
180 70
150 60
145 55
135 45
125 35
100 25
女性のf0年齢表
f0(Hz) 声年齢
168.66 64
199.26 54
215.76 50
218.76 49
230.26 48
238.86 40
254.76 30
294.76 15
例)
サンプル音声SV1のf0=213 --> 女性で推定声年齢=50.6歳 
同一コンテンツ私のf0=145--> 男性で推定声年齢=55.0歳

これ以降「同一コンテンツの私」は、ブログ「音声ドリル診断」で診断した私の読みです。高得点を意識せず、普段通りに読上げた結果です。

f0ランクは、男女差を標準化し0.0~1.0に比例配分して決めます。

推定年齢統計値
統計値推定年齢
最小17.612 
最大70.0
係数A-0.019
係数B1.3362

今回、サンプルデータの最大最小から以下で、線形変換して求めています。

f0ランク(0~1) = 係数A×推定年齢+係数B 
     = -0.019×推定年齢+1.3362 から、
サンプル音声SV1のf0ランク = 0.37
同一コンテンツ私のf0ランク = 0.286

声の艶による声年齢ランク

声艶を推定する倍音の比率と中間値です。

男性の統計値
統計値 倍音比率 中間値
最小 0.183 0.408
最大 0.385 0.865
係数A 4.949 2.186
係数B -0.097 -0.892
女性の統計値
倍音比率 中間値
0.191 0.636
0.728 0.940
1.842 2.186
-0.355 -0.892
倍音比率は、倍音総数と非倍音総数から、以下で求めます。
倍音比率 = 倍音総数/(倍音総数+非倍音総数)
総数は、各サンプリング(本例では16ms毎)で得たf0に対し検出した有効な周波数から、倍音、非倍音の数をカウントし、それを文全体で積算した値です。

ランクは、男女差を統合し、0.0~1.0比例配分して決めます。

声の艶統計値
統計値平均ランク
最小0.543
最大0.983
係数A1.138
係数B-0.0984

例)
サンプル音声SV1の倍音比率=0.539,中央値=0.860 --> ランク=0.689
同一コンテンツ私の倍音比率=0.259,中央値=0.723 --> ランク=0.510

滑舌による声年齢ランク

ブログ「音声ドリル診断/滑舌レート」から声年齢ランクを推定します。
滑舌ランク算出パラメータ
パラメータサンプルSV1わたしSV1
高周波発声比1.291.67
累積比1.060.82
最大比1.000.60
比較置換率0.000.00
ランク1.000.82
ここで、
発声比: 高周波の発声数の一致度
累積比: 高周波の発声レベルの累積した値の比
最大比: 最大レベル(Max:5)との比較
置換率: AIと被験者の文字比較で、置換が発生した比率

抑揚による声年齢ランク

ブログ「音声ドリル診断/抑揚」から声年齢ランクを推定します。
抑揚ランク算出パラメータ
パラメータサンプルSV1わたしSV1
音程差分0.820.56
変化0.780.98
0.920.78
音圧差分0.700.55
変化0.931.00
1.001.00
ランク0.870.66

テンポによる声年齢ランク

ブログ「音声ドリル診断/テンポレート」から声年齢を推定します。

テンポランク算出パラメータ
パラメータサンプルSV1わたしSV1
区切り場所1.001.00
1.001.33
速度1.050.97
ランク0.971.00

声年齢の判定

5つの声要素の推定レートから得た平均値から、20歳~75歳に線形補間した値が推定声年齢です。
声年齢推定
ランクサンプルSV1わたしSV1
f00.370.286
滑舌1.000.82
抑揚0.870.66
テンポ0.971.00
声の艶0.6890.51
平均0.77960.6544

声年齢ランク統計値
統計値平均ランク
最小0.30059
最大0.87879
係数A-95.1228
係数B103.593
サンプル音声SV1の声年齢 = 0.7796×(-95.1228)+103.593=女性で、29.44歳
同一コンテンツ私の声年齢 = 0.6544×(-95.1228)+103.593=男性で、41.344歳
と判定されました。

総合判定

ここまでは同一の文を毎回測定し、判定結果の違いを把握することを前提に説明してきました。が、実際には読む対象のコンテンツの長さや内容で、計測結果が左右されます。内容・長さに影響されない平均的なスコアーを希望する場合は、総合判定の詳細表示が有効です。

以下で、「甘鯛の姿焼き(北大路魯山人作)」冒頭の5つの文を「AIドリル」で計測し総合判定した示します。


ドリル制作者の総合判定詳細

ドリル制作者の音声を「AIドリル」で計測しまし、総合判定詳細表示した内容です。


ドリル制作者総合判定詳細


私の総合判定詳細 
私の平素の音声を「AIドリル」で計測し、総合判定詳細表示した内容です。

被験者総合判定詳細