音メディア処理研究室

 
デモ大会

Whisperを用いた音声認識による話者別文字起こし

2024年度のデモ大会で発表した内容です。

背景

音声認識技術に興味を持ち、様々な現場で、音声データの文字起こしの需要があることを知った。
そこで、話者別で文字起こしをするツールを作成してみたいと考えた。

開発環境

使用言語:Python
開発環境:Googole Colab
OS:Windows11
GPU T4

手法

・Whisperによる文字起こし
「Whisper」
・OpenAIの高度な音声認識モデル
・多言語対応
・ディープラーニングを活用
Whisperモデルを使用して、音声ファイルからテキストに変換し、各セグメントに分割する。
各セグメントの開始時間、終了時間、テキストを出力する。

・参照音声と比較して話者を特定
「コサイン類似度」
埋め込みベクトル同士の類似性を評価するために使われる指標として使用する。
2つのベクトルのなす角度のコサイン値を計算し、類似度を測る。
入力された音声と各参照音声の各セグメントの音声に最も似ている話者が特定される。

デモ内容

二人の音声データを録音する
Aの参照音声

Bの参照音声

AとBの会話の音声(29秒)

音源:高道 慎之介, “Japanese versatile speech corpus”

出力結果
出力にかかった時間:31秒

まとめ

・OpenAIのWhisperを用いて、音声ファイルをテキストに変換することができた
・話者を特定し、話者名をラベル付けすることができた

今後の課題

正確な漢字変換ができていなかった。また、同性同士のときの特定ができていない時があった。これらは、参照音声データの不足が原因だと考えられる。
展望として、音源分離を行い、発話が重複した場合の特定を行いたいと考える。

参考文献

MUSIC法を用いた音源位置推定

2024年に行われたデモ大会で発表した内容です。

昨今、Youtubeのように立体音響を身近に体験できる機会が増えています。

そういった環境を私が利用する中で、立体音響が機能する仕組みや音の方向が特定される理屈を理解するために今回のデモを行いました。

手法

MUSIC法を用いました。

  • MUSIC法

MUltiple Signal Classification 法の略で高分解能のスペクトル推定方法の1つです。信号とノイズを分離することで、信号の方向や周波数を推定します。

使用機材

  • Behringer C-2 ×2(マイク)
  • Roland Octa-capture(オーディオインターフェース)

録音に利用

  • Visual Studio Code(Python3.12.8)

プログラムの作成に利用

検証方法

Behringer C-2 ×2(マイク)とRoland Octa-capture(オーディオインターフェース)を使用し、録音します。今回は5秒間録音を行いました。

プログラムを起動し、録音した音声の音源方向を計算します。後に画像としてPCの画面に出力します。

結果・考察

下の画像にあるように、ピーク(音の到達方向)を特定はできたものの、写真右部の様に音の無い方向からも反応が出てしまう結果となりました。マイクの数が少なく正確に特定することが難しかったと思われます。

マイクの数を増やしたり、拾う音の周波数を変更することでより正確に音源の方向を特定することが可能になると考えます。

(1/24 追記 デモ大会にて今回用いたMUSIC法で使われる音源は、無限遠方からの平面波を前提とされていることが分かり、今回の検証の仕方が不適切だと判明しました。)

参考文献

Welch法による心拍変動の周波数解析とストレス診断

2024年のデモ大会で発表した内容です。

【背景・目的】

近年、ストレスを抱える人が増加傾向にあります。その背景には、働き方の多様化や長時間労働、情報過多、社会的な孤立感、さらには経済的不安や環境問題など、複雑に絡み合う要因が存在します。特に、スマートフォンやSNSの普及により、情報が即座に手に入る便利さの一方で、過剰な情報が精神的負担を引き起こす「情報疲労」という新しいストレスの形も注目されています。

このような現代社会特有の問題に対処するため、私は聴診器を用いて心音を測定し、ストレスの有無を簡易的に診断するプログラムを作成しました。

【手法】

・RR間隔とは

心拍のピーク間(R波)の時間間隔のことです。R波は心音の「ドックン」の「ドッ」に該当します。この間隔の変動を解析することで、心拍変動を評価します。また、RR間隔で平均心拍数を計算した後に診断に使用します。

RR間隔の時系列データを周波数解析(Welch法)することで、低周波(LF)成分と高周波(HF)成分を分離します。

・LF (Low Frequency)とは
交感神経と副交感神経の両方の活動を反映する。低周波成分で0.04~0.15Hz

・HF (High Frequency)とは
副交感神経の活動を反映させ、心身を休ませるために活動性を抑えて回復、修復させるはたらきを持つ。呼吸サイクルに関連し、心拍に同調する。高周波成分で0.15~0.40Hz

・LF/HF比について
ストレス指標(交感神経の活性度)のことです。LFとHFの周波成分をLF/HFすることで求まります。

・Welch法とは
時系列データから複数のセグメントを分割し、各セグメントでPSDを推定し、最後にそれらの平均を計算する手法です。この手法を使用してLF、HF、LF/HF比を計算します。

【開発環境】

開発環境は以下の通りです。

・Python 3.12.4(心拍変動解析ライブラリpyHRV)を使用
・Audacity 2.4.2
・Visual Studio Code

サンプリング周波数を1000、バンドバスフィルタで0Hzから500Hzに設定して心音を録音し、LF/HF比と平均心拍数を使用して時間×周波数を総合的に判断します。

【デモ内容・測定方法】

差異があるか比較するために二分間心音計測とスマホアプリの「ストレス計測」というアプリを使用します。
このアプリはカメラに指をあてることで脈拍を計測してストレス計測をしています。

また、測定位置は左第5肋間鎖骨中線の心尖部に聴診器をあてて計測を行います。LF、HFの成分及び心音が最も聞こえやすい部位であるためです。

ストレスの有無については以下の手順で判断を行っています。
LF/HF比は0.55、心拍数は75を平常時の基準値として設定し、4つの段階に分類してストレスの有無を判断します。

LF/HF比が0.55未満かつBPMが75以下
「ストレスがある可能性は十分低い」

LF/HF比が0.55以上かつBPMが75以下
「ストレスがある可能性は低い」

LF/HF比が0.55未満かつBPMが76以上
「ストレスがある可能性は高い」

LF/HF比が0.55以上かつBPMが76以上
「ストレスがある可能性は十分高い」

【実験結果】

 

 

心拍数グラフの0~15秒付近は自作したプログラムと結果が異なりますが、正しく診断できていることが分かります。

【改善点・課題】

心理的要因を数値化することは個人差が大きいため、十分な精度を得ることが困難でした。
また、実際のデモ大会本番ではうまく診断が出来ませんでした。

 

デモ大会本番では「ストレスがある可能性は十分低い」と間違った診断結果が表示されました。

原因として以下があげられます。
・測定中に会話音などのノイズが入ってしまったため
・心音のBPMが早かったため、RR間隔をうまく検知することができず平均心拍数の計算に異常が起きた。
・録音音量が高く、音割れが起きたため

RR間隔を使用して平均心拍数を計算するのではなく、自己相関テンポグラムなどの技術を使用することでより正しく平均心拍数を計算することができるのではないかと考えます。今回は平均心拍数とLF/HF比を使用して診断を行いましたが、さらに血圧などの判断材料を増やすことで精度向上できる可能性があります。

独立低ランク分析を用いた楽曲の音源分離

2023年度のデモ大会で発表した内容です。

<概要>

独立低ランク分析を用いた楽曲の音源分離
ボーカルと楽器ごとに分離するプログラムをPythonで作成しました。

 

<開発環境>

開発言語:Python

環境  :Visual Studio Code

OS    :Windows 11

CPU      :11th Gen Intel(R) Core(TM) i7-1165G7 CPU @ 2.80GHz 2.80 GHz

 

<手法>

Vocalと楽器のそれぞれ独立した音源をコンピュータ内で畳み込み、その混合音を楽器ごとに分離しました。

このプログラムを、音源の数を2つから4つの場合で実行し分離結果を比較しました。

 

<使用した音源>

Young  Griffo/Facade(DSD100 | SigSepより)

 

<実行結果>

2音源(Vocal,Guitar)

・分離前

・分離後(vocal)

・分離後(Guitar)

3音源(Vocal,Guitar,Drums)

・分離前

・分離後(vocal)

・分離後(Guitar)

・分離後(Drums)

 

4音源(Vocal,Guitar,Drums,Bass)

・分離前

・分離後(vocal)

・分離後(Guitar)

・分離後(Drums)

・分離後(Bass)

 

<まとめ>

VocalとGuitarの音源が2つの場合では、混合前の音源と比較してもきれいに分離できました。しかし、音源数を増やすにつれて後ろでほかの楽器が小さく聞こえており、分離の精度は下がっていきました。特に、音源が4つの場合の分離後のVocalにDrumsとBassの音がにじみ出ていました。

<参考文献>

  • 戸上真人.”Pythonで学ぶ音源分離“.(2023/12/17)
  • Daichi Kitamura.“研究成果デモンストレーション”.2023/11/30. Daichi Kitamura (d-kitamura.net)(2023/12/17)

音楽と映像の調和と違和感

2022年に行ったデモ大会の資料です。

【概要】

音楽と映像における親和性または違和感について、動画を用いて以下の項目で比較、検討しました。

●1つの動画の音声のみを3パターン分に編集したものを視聴し、どれに違和感を覚えたかを検証

❶単音

❷会話音

❸歩行音

❹音楽

 

単一指向性マイクとアンビソニックマイクを用いたVR動画

2023 年 12 月に行われたデモ大会の内容です。

コロナ禍で自宅で気軽に音楽鑑賞をしたいという需要が増えているので、今回は VR 動画と立体音響に注目しました。

VR オーディオを簡単に制作できる手法の一つとしてアンビソニックマイクがあります。これは 360 度音を収音することが可能なマイクのことです。

<スライド1:アンビソニックマイク>

VR オーディオについては単一指向性のマイクでも作成することが可能であることを知り、単一指向性のマイクの本数が 2 本の時と 6 本の時とアンビソニックマイクの時でどのような違いが出るのか比較するために動画を撮影して比較してみました。

<スライド2, 3:背景・目的>

 

提案手法としてはまずアンビソニックマイクを 1 本と単一指向性マイクを合計 8 本を使って同時に収音し、THATA で撮影した映像と重ねます。
収音した音声については以下のように各マイク、本数ごとにフォルダを分けました。

<フォルダ一覧>
・アンビソニックマイク 1 本
・単一指向性マイク 2 本
・単一指向性マイク 6 本

単一指向性マイクで集音した音声については Adobe Premiere Pro を使い、立体的に聞こえるように編集しました。
また、使用した機材については以下の通りです。

<スライド4, 5:提案手法・使用機材>

 

撮影した環境は以下のようにしました。
マイクの位置関係は上からアンビソニックマイク、単一指向性マイク(6 本 → 2 本)です。

<スライド6:環境>

 

撮影して編集した動画については youtube にアップロードしました。
URL はこちらです。
1. アンビソニックマイク H3-VR(Ambisonics)
2. 単一指向性マイク 2 本
3. 単一指向性マイク 6 本

<スライド7:動画>

 

最後に課題とまとめについてです。

まとめとしてはアンビソニックマイクであるH3-VRを使って収音したものが一番立体的に聞こえました。
また比較した主観としては、単一指向性マイクが6本ときのほうがわずかに2本の時よりも聞き心地がよかったです。

課題としては単一指向性マイクを6本で撮影した動画を編集するとき、映像に対して右側に当たるマイク 3 本が左側のおよそ 2 – 2.5 倍ほど音量が大きく音量バランスを調整するのにもっと良い塩梅にすることができたということが挙げられます。

<スライド8:課題、まとめ>

 

参考文献は以下の通りです。

<スライド9:参考文献>

 

短時間フーリエ変換を用いた咳音検出

2023年度のデモ大会で発表した内容です。

【概要】

Google Colaboration上のフォルダ内の音声ファイルに咳音があれば文字で報告するプログラムを作成しました。

【背景・目的】

 現在、新型コロナウイルスの影響で、スマートフォンやPCを利用したオンライン受診が広まっています。また、豚などの家畜の健康状態を把握するための咳音検出システムの研究・開発が進められています。そこで、私はPCで咳音検出を検出するプログラムが作成できるのではないかと考え、デモ大会に向けてプログラムに取り組みました。

【システム説明】

下図は、咳音のスペクトログラムと波形です。

波形やスペクトログラムの類似度を計算すれば、咳音の判定に使えるのではないかと考えました。

音声分析を行うために「短時間フーリエ変換」を用いました。

 スペクトログラムの差分、及び類似度を計算し、閾値を用いて咳音かどうかを判断します。類似度が830000以上1150000以下の時は咳と判定します。

 

【プログラムの使い方】

まず、スマートフォンで自身の咳や声の音を録音します。次に、その音声ファイルをパソコンに送り、Google Colaboration上のフォルダに入れます。プログラムを実行すると咳音かどうかが判断されます。

【デモ大会での実験】

デモ大会では11個の音声ファイルで実験しました。音声ファイルの内訳は、咳音が8個、「こんにちは」という音声が1個、「あー」と発した音声が2個、無音の音声ファイルが1個となっています。

【実験結果】

下図はコンソール上での出力結果です。

11個の音声ファイルのうち10個が適切に判別されました。誤って咳音が検出されたのは、「こんにちは」という音声でした。

【開発環境】

使用言語:Python

環境:Google Colaboration

【使用した音源】

自身で咳をしてスマートフォンで録音しました。咳音以外も自分の声で録音しました。録音には、スマートフォンアプリの「ボイスメモ」を使用しました。

<咳音の例>

 

<「あー」という音声の例>

 

【参考文献】

音声分析におけるフーリエ変換とスペクトログラムを理解する  Qihttps://qiita.com/shirowanisan/items/6af2cc4c4be0c57bef06ta

『咳音検知技術/SoundTalksTM』を活用した飼養豚の体調管理に関する「日本初」の実証実験開始について https://www.boehringer-ingelheim.com/jp/press-release/20211101-02 

クロマベクトルを用いた音楽コードの推定

2023年1月17に行われたデモ大会にて発表した内容です。

[実験環境]

・プログラム作成および実行:MATLAB2017

・音源の作成:Cakewalk by bandlab

[使用する用語の説明]

クロマベクトル:音名を周波数軸として、パワーの分布を表現した特徴量

コード:同時に演奏された2つ以上の和音

   

[発表内容]

初めに、今回の実験の大まかな手順について説明をします。

①推定したいコード音からクロマベクトルを構築し、なっている音を抽出する。

②抽出した音の組み合わせからコードを推定する

なお、今回の実験は打ち込み音源ギターを録音した音源の2つで行います。

[予備実験についての説明]

先述した発表にあたって、デモ大会本番に向けた予備実験を行いました。

発表本番を想定して、打ち込み音源とギターを録音した音源の2種類であらかじめ実験を行うことで本番の精度を上げることを目的としています。

[打ち込み音源を用いた予備実験]

予備実験の打ち込み音源で使用した楽器およびコードを以下に示します。

<使用楽器>

1. Piano1  2. Marimba 3. Harp 4. Soprano Sax 5. Nylon Gt. 6. Cello 7. Natural Lead

※楽器名はCakewalk by bandlabのプラグインを参照

<使用コード>

1. Cmaj  2. Gmaj  3. Amin  4. Emin  5. Dsus4  6. Bsus4  7. Gaug  8. F#aug  9. A#dim  10. Fdim

参考として使用したコード10パターンを鳴らした音源を示します。

 

各楽器に対して10個のコードの音源、計70個の音源を作成してコードの推定を行っていきます。

[ギターの実音源を用いた予備実験]

予備実験のギターの実音源に使用したエフェクトおよびコードを以下に示します。

<使用エフェクト>

1. AC-Top30 Basic Clean  2. The Crunch  3. Dirty

※エフェクト名はCakewalk by BandlabのアンプシミュレーターTH3を参照

<使用コード>

・先ほど打ち込み音源で使用した10個のコードを使用

各エフェクトに対して10個のコードの音源、計30個の音源を作成してコードの推定を行っていきます。

参考として、ギターで10個のコードを録音した音源を示します。

[実験結果]

MATLABにおける実行結果を以下に示します。

※この表の見方は0-1 ~ 0-10が正解のコード、1 -1 ~ 7-10が打ち込み音源で出力されたコード、11-1 ~ 13-10がギター音源で出力されたコードとなっています。

この表からもわかるように、打ち込み音源は5-1, 5-2, 5-4, 5-7, 5-10でミスがあり、ギターを録音した音源については、13-7, 13-8, 10-1, 10-2, 10-3でミスがありました。一方で、それ以外の音源は正解のコードが出力されていました。

[デモ大会本番で行った実験]

デモ大会では、予備実験に使用したプログラムを用いてデモを行いました。

打ち込み音源を用いた実験では、時間の都合上予備実験で用いたすべての音源に対してコード推定を行うことが難しかったため、使用した音源のうち1.Piano1と2.Marimbaの20個の音源のコードを推定しました。

ギターを録音した音源では、発表時にギターの音を録音したものを用いて実験を行いました。なお、こちらも時間の都合上10個のコードを演奏することが難しかったため、1. AC-Top30 Basic Cleanのエフェクトを用いて1. Cmaj  3. Amin  5. Dsus4  7. Gaug  9. A#dimの5つのコードを推定します。

[実験結果]

発表本番で行った実験の結果を以下に示します。

※0-1 ~ 0-10および00-1 ~ 00-10は正解のコード、1-1 ~ 2-10は打ち込み音源によって出力されたコード、14-1 ~ 14-5はギターの音源によって出力されたコードを示す。

表からわかるように、すべての音源において正常にコード推定ができていることがわかります。

[考察・まとめ]

今回のデモ大会では打ち込み音源録音した音源の2種類の音源からクロマベクトルを生成してコードの推定を行いました。

発表時に行った実験ではすべてのコードを正常に推定することができました。

一方で、予備実験の際には正常に推定できていないコードが存在しました。この理由として

・楽器やエフェクトによって倍音成分の出方が異なる

・押さえ方が同じコードが存在すること(GaugとBaug, FdimとBdimなど)

が考えられます。これを踏まえたうえで倍音成分の除去を行うことでより推定制度が向上すると考えられます。

VR動画と2D動画の合成で作成したVR動画

2022年度のデモ大会の内容です。

<概要>

VR動画に2D動画を合成させることにより、新たなVR動画を作成することを目的としている。

また、編集ソフトによる合成であれば、通常のVRカメラでは撮影できないような映像を制作することができる。

<動画編集ソフト>

Adobe Premiere Pro

<使用機材>

RICOH | THETA S

ZOOM | H3-VR Handy Recorder

<発表資料>

<デモ動画>

<参考資料>
Adobe 合成動画を作成する方法
https://helpx.adobe.com/jp/premiere-pro/how-to/video-composite.html

Adobe Premiere ProでのVR編集
https://helpx.adobe.com/jp/premiere-pro/using/VRSupport.html

wondershare Adobe Premiere Proを使ってクロマキー合成をする方法をご紹介
https://filmora.wondershare.jp/adobe/make-chroma-key-video.html

楽曲のBPM分析

2022年度のデモ大会で発表した内容です。

【概要】

楽曲の音声ファイルを読み込ませるだけで自動でBPMを算出するプログラムを作成しました。出力結果はフーリエテンポグラムと自己相関テンポグラム、BPMの数値です。

 

【開発環境】

使用言語:Python

環境:Google Colaboratory(Google Chrome上)

 

【発表資料】

 

【使用した音源】

夜明けと蛍/n-buna(piaproより)

 

ウミユリ海底譚/n-buna(piaproより)