音声から性別推定するAPIやライブラリがあんまりないようなので、簡易的なライブラリを作成しました。
3秒間サンプリングから一定音量以上の部分で声域のバンドパスフィルタをかけ、ピッチの下位25%平均とピッチ全体の分散から大まかな性別を推定しています。
フォルマントを使うのも試しましたが、機械学習まで使うような形でないとあまり精度向上は期待できそうもないのでなるべく軽量に仕上げていますが、そこそこ推定はできています。
そもそもジェンダーフリーな時代なのでもはやそういう切り分け自体がナンセンスなのですが、音声合成時に選べるのは男声、女声の2種類というものがほとんどですし、ピッチの取得もできるのでSSMLで音声合成時に10%程度ピッチを上下させて元の声に近い雰囲気を再現することも(処理が重くなることもなく)実現可能です。
応用分野としては音圧変化等も合わせて、体調や感情推定に活用できればと考えています。