チーム25 HackSphere
関東の方とお話ししているとよく「関西の方ですか?」と聞かれますが、それは関西弁が特徴的な話し方だからであると思います。
そんな特徴的な話し方の関西弁にも、実は地域によって訛りの違いがあります。
その聞き分けることの難しい違いをAIに分析してもらうことで、自分はどのような訛りの傾向があるのかを知ることができます。
K. : かなり
A. : あたまのいい
N. : 日本の
S. : 出身地判定
A.I : AI
です。よろしくおねがいします。
- コンテナを起動
- ターミナルで
source run_container.sh
を実行 - コンテナが起動してアタッチされる
- ターミナルで
- サーバーの起動
- コンテナに接続したターミナルで
source run_servers.sh
を実行
- コンテナに接続したターミナルで
- アプリケーションに接続
- ブラウザで
http://localhost:3000
を開く
- ブラウザで
- 声を録音する
- 『録音開始』ボタンを押して、表示される文章を読み上げる
- 『送信』ボタンを押すと、録音が停止して音声がバックエンドサーバーに送信される
- 分析結果が表示される
K.A.N.S.A.Iというお題から、K.(かなり) A.(あたまのいい) N.(日本の) S.(出身地判定) A.I(AI)という名前のAIを連想しました。
入力された音声に対して、話者の話し方の特徴をAIが分析して出身地を特定するAIです。
左上にある、K.anari A.tamanoiiといったロゴや、結果発表の際のランダムに表示される顔文字など、ところどころデザインに遊び心を入れました。
-
データの前処理
- 音声のサンプリングレートを16000に変換する
- 波形の振幅を標準化する
- OpenAI whisper の文字起こしを用いて、沈黙部分を削る
-
特徴量抽出(HuBERT)
- 音声データを5秒間隔でN個に区切る
- HuBERTの事前学習済みモデルに入力して、N
$\times$ T 本の特徴量ベクトルを得る
- (T は5秒の音声をHuBERTがトークン分けした数)
-
分類(SVM)
- HuBERTで抽出した特徴量ベクトルを学習データとして、SVMをscikit-learnを用いて学習
- 重みをtorch.Linearに移植して、推論する
- 結果にsoftmaxをかけて、確率分布とする
アプリケーションの作成にあたって、学習用データと、事前学習済みのHuBERTモデルに以下のものを使用しました。
-
学習用データ
-
事前学習済みモデル