性別・声年齢の推定 - 発声の基本周波数・艶・滑舌・テンポからの総合判定
性別や声年齢を推定しています。専門家でもないのに不見識だと叱られそうですが、実年齢との一致に拘らずに単にトレンドを知ることを目的に、この計測器に組み込んでいます。
性別判定は、声の基本周波数が手掛かりになると広く知られています。が、男女間がグラデーションになっており、はっきりとした線引きは困難です。図は、研究レポート「加齢に伴 う話声位の変化」*1(略称、SFFレポート)で提供されている男女の基本周波数の有効範囲を図示したものです。
このように、8割程度は判定できますが、140Hz~160Hzの20Hz期間すなわち残り2割は、男女の判定ができません。
基本周波数
基本周波数とは、信号を正弦波の合成で表したときの最も低い周波数成分の周波数を意味する。音楽では、その最も低い音を基音と呼び、f0と表記する。
f0とMPM
f0を知る便利なツール
![]() |
Audacityによる周波数分布 |
Audacity平均: 179.5 HzMPM平均: 192.7 Hz (80~280Hzでフィルター)
となり、その差は13.2Hzとなりました。
MPM平均算出時にf0範囲にフィルターしていても高くなっていることが分かります。原因は、基音ではなく倍音が通知されるケースがあるためです。また、フィルターすることにも抵抗があります。
スペクトルからf0算出
f0推定方法をスペクトルにした背景 => f0推定には、自己相関型(実は、MPMはこの範疇)の他に様々な提案があるようですが、スタンダードと呼べるものは無いようです。手近なAudacityの周波数解析で一般に利用されているスペクトラムアルゴリズムをベースにすることで、取得したf0の値の信ぴょう性(?)を確保できるではないかと判断しました。ここで矩形Windowを指定しているのは、MPMがスペクトルを求める際に採用しているためです。
周波数スペクトル => いきなり数学的な話になり辟易している方も少なからずいらっしゃるかと思います。そのような方に誤解を恐れずザックリ説明しますと、 音は波で表現できるという了解の下で、この波は「異なる周波数を持つ三角関数の足し算で表現できるのだ。」と、フランスの数学者フーリエさんが唱え、証明したことが発端です。この三角関数の足し算に対し、特定の周波数を持つ三角関数を掛け算(数学では内積)すると、異なる周波数の三角関数の部分が0になり、指定した周波数だけ抽出できる。という技(?)を使って、波を各周波数成分に分解することが出来るんですね。ですから、周波数0から調べたい上限の周波数Nまで、順番に掛けていけば、各周波数の成分が抽出できて、それをグラフにしたのが周波数スペクトルという訳です。
![]() |
Audacity平均: 179.5 Hz累積スペクトル平均: 180.8Hz
性別の推定
音声から性別判定する際、高齢男女の判別が特に困難となっているようです。f0の平均では、男性は高齢化と共に声が高くなる傾向がある一方、女性は逆に声が低くなる傾向があり、先の重なり部分の原因になっているようです。
そこで、高齢化の特徴に着目して男女のべ31名のサンプルから性差が推定できるファクターを調べてみました。
性別推定ファクター
- MPMによるピーク相関値が95%以上の比率
- f0の性差が判定できる周波数
- 倍音の比率
31名のサンプルによる二つのファクターの関係を図示します。
- f0が180Hz以上である
- MPM観測で、ピーク相関値が95%以上の発声比率が7%以上
- 倍音比率が50%以上
声年齢の推定
声年齢推定の因子
- F0の高低
- 調音の正確さ
- 話す速度
- 音質(クリアか気息性か、嗄声)
- 休止時間
- 声のふるえ
- 声帯の緊張度
- 空気のもれ
- 不正確な子音の調音
- 話す速さ
- F0
- ゆらぎ
- 高調波のSN比
- F0(F0の高さ)
- 滑舌(不正確な子音、高調波のSN比)
- 抑揚(声のふるえ、ゆらぎ)
- テンポ(話す速度、休止時間、話す速さ)
- 声の艶(音質、空気の漏れ、高調波のSN比)
各因子と年齢の関係
F0による声年齢ランク
女性: SFFレポートの年齢群に倣い、平均f0の手法による差分を考慮する男性: 年齢と共に周波数が増加するリニアな関係を導入
こちらがf0から推定した声年齢の対応表です。
|
|
例)サンプル音声SV1のf0=213 --> 女性で推定声年齢=50.6歳同一コンテンツ私のf0=145--> 男性で推定声年齢=55.0歳
これ以降「同一コンテンツの私」は、ブログ「音声ドリル診断」で診断した私の読みです。高得点を意識せず、普段通りに読上げた結果です。
f0ランクは、男女差を標準化し0.0~1.0に比例配分して決めます。
統計値 | 推定年齢 |
---|---|
最小 | 17.612 |
最大 | 70.0 |
係数A | -0.019 |
係数B | 1.3362 |
今回、サンプルデータの最大最小から以下で、線形変換して求めています。
f0ランク(0~1) = 係数A×推定年齢+係数B= -0.019×推定年齢+1.3362 から、サンプル音声SV1のf0ランク = 0.37同一コンテンツ私のf0ランク = 0.286
声の艶による声年齢ランク
|
|
統計値 | 平均ランク |
---|---|
最小 | 0.543 |
最大 | 0.983 |
係数A | 1.138 |
係数B | -0.0984 |
例)サンプル音声SV1の倍音比率=0.539,中央値=0.860 --> ランク=0.689同一コンテンツ私の倍音比率=0.259,中央値=0.723 --> ランク=0.510
滑舌による声年齢ランク
パラメータ | サンプルSV1 | わたしSV1 | |
---|---|---|---|
高周波 | 発声比 | 1.29 | 1.67 |
累積比 | 1.06 | 0.82 | |
最大比 | 1.00 | 0.60 | |
比較 | 置換率 | 0.00 | 0.00 |
ランク | 1.00 | 0.82 |
抑揚による声年齢ランク
パラメータ | サンプルSV1 | わたしSV1 | |
---|---|---|---|
音程 | 差分 | 0.82 | 0.56 |
変化 | 0.78 | 0.98 | |
幅 | 0.92 | 0.78 | |
音圧 | 差分 | 0.70 | 0.55 |
変化 | 0.93 | 1.00 | |
幅 | 1.00 | 1.00 | |
ランク | 0.87 | 0.66 |
テンポによる声年齢ランク
パラメータ | サンプルSV1 | わたしSV1 | |
---|---|---|---|
区切り | 場所 | 1.00 | 1.00 |
数 | 1.00 | 1.33 | |
速度 | 1.05 | 0.97 | |
ランク | 0.97 | 1.00 |
声年齢の判定
ランク | サンプルSV1 | わたしSV1 |
---|---|---|
f0 | 0.37 | 0.286 |
滑舌 | 1.00 | 0.82 |
抑揚 | 0.87 | 0.66 |
テンポ | 0.97 | 1.00 |
声の艶 | 0.689 | 0.51 |
平均 | 0.7796 | 0.6544 |
統計値 | 平均ランク |
---|---|
最小 | 0.30059 |
最大 | 0.87879 |
係数A | -95.1228 |
係数B | 103.593 |
サンプル音声SV1の声年齢 = 0.7796×(-95.1228)+103.593=女性で、29.44歳同一コンテンツ私の声年齢 = 0.6544×(-95.1228)+103.593=男性で、41.344歳
総合判定
ここまでは同一の文を毎回測定し、判定結果の違いを把握することを前提に説明してきました。が、実際には読む対象のコンテンツの長さや内容で、計測結果が左右されます。内容・長さに影響されない平均的なスコアーを希望する場合は、総合判定の詳細表示が有効です。
以下で、「甘鯛の姿焼き(北大路魯山人作)」冒頭の5つの文を「AIドリル」で計測し総合判定した示します。
ドリル制作者の総合判定詳細
ドリル制作者の音声を「AIドリル」で計測しまし、総合判定詳細表示した内容です。
コメント
0 件のコメント :
コメントを投稿