manabu’s blog

日々の足跡。

人と音声知覚のはなし(音声の構造的表象)

はじめに

この記事は、eeic Advent Calender 2017の21日目の記事です。

何をやろうか考えた時、はじめは去年よりマジメにダメ絶対音感やってみようかと思ったのですが、実装評価をやる時間は無かったので、読んで面白いお話(研究紹介)を書こうと思います。

人間が音声を通して言語を獲得する過程について、また音声の音響的普遍構造(発話者の性質によらない音声の物理表象)についての、僕の好きな研究の(恐れ多くも)紹介です。
(音声屋さんへ:何か間違ったことを言っていたら、ひっそりとコメントで指摘してもらえると助かります。笑)

この記事の内容のほとんどはこの資料が元になっています。
もっと詳しく知りた人はここから諸資料を読むと僕より詳しくなれる。

音声とは

人間のコミュニケーションの最もたるものは音声です。 だと思っています。 まあ最近はSNSの発達で、発話とタイピングのどちらの方が主なコミュニケーション手段か分かったもんじゃないですが...笑
タイピングよりも、もっとシンプルな記号(ボタン操作)を用いた意思伝達も使われる現代では、スマートスピーカー(Amazon Echo や Google Home)のような音声インターフェースが今後本当に浸透していくのか、疑問が拭えない僕です。
「いや脳波でいいじゃんw」みたいなこと言う人にも出会いました。こわちか。

そんな僕が思うに、音声を手段に意思伝達を行う最も良いところは、非言語情報を一度に伝えられるところでは無いでしょうか(脳波はさておき)。 同じ文面でも、付与された感情によって発話の意図は変わってきます。 SNSでも、感情をテキストに付与するために、絵文字・顔文字・スタンプなどをみんなよく使います。
また、音声の音響的特徴は話者性(speaker identity)も含みます。その人の声・喋り方、ですね。 先ほどのスタンプなども、"自分らしさ"を出すためにスタンプなどを使っている人も多いのではないでしょうか。
スマートスピーカーがここらへんの非言語情報を扱えるようになれば、その存在意義は大きく変わりそうです。 ホンモノの人工知能の誕生だーと騒がれそうです。でも実際、中にいるのが人間なのか機械なのか、区別がつかなさそう。友達はみんなスマートスピーカー。人工知能は音声研究から生まれる!(爆)

音声はこのように、言語情報の他に非言語情報(話者性の他にも、音響機器による歪みなどある)が含まれます。 非言語情報を排除した真の「あ」という音があった場合、非言語情報を付与することでその「あ」の物理的特徴量は歪みます。大きく歪みます。
なんなら、話者Aの「あ」という音は、話者Bの「あ」よりも「お」という音と物理的特徴量としては近いってくらい歪みます(当然距離尺度によりますが、、、)。
このような歪んだ音声をどうやって我々は認識しているのでしょうか。
初対面の人が何言ってるかマジで分からない、なんてことは基本的に無いですよね。
つまり、話者性による音声の歪み方にルールがあると考えるのが自然ではないでしょうか。
話者に対してロバストな音声知覚能力を人間は持っている。
では、そもそも人間は、そのロバストな音声知覚能力をいつ獲得するのでしょうか?
スマートスピーカーなどに実装されている音声認識器では、機械学習を用いて、多人数話者の音声を用意し音声toテキストマッピングを学習することで、話者非依存な認識器を構築することが多いと思います。
それと照らし合わせて考えると、人間は成長の過程における多様な人との音声コミュニケーションを通して、ロバストな音声知覚を獲得すると言えます。 実際、そうやって獲得・強化されている面はあると、僕は思います。

しかし、例えば、赤ちゃんの言語獲得を考えた場合はどうでしょうか。

初めは何も喋れない幼児も、 親が幼児のことを「かなちゃん」と呼んでいるうちに、幼児も「かなちゃん」と模倣発話をするようになるでしょう(自分のことだと認識しているかとかは置いといて)。 普通のことに思われるかもしれません。
でも、よくよく考えてみてください。親の発する「かなちゃん」と幼児自ら発した「かなちゃん」は先ほど述べたように物理的特徴量としては違います。 幼児の発声する「かなちゃん」は、幼児の声そのもので、大人のように低くて太い声を出そうと努力しているようには思えないです(子供を持ったことありませんが。笑)。
ちなみに、九官鳥も人の声を模倣しますが、九官鳥は模倣対象の人間と同じ声を出すらしいです。
九官鳥が喋るのを聞けば飼い主が分かる、けれど子供の声を聞いただけでは親は分からない。

このように幼児の模倣発話は、話者にロバストな音声知覚能力が備わっていないとできないと考えられます。
また、音声コミュニケーションの相手は親に著しく偏っているため、経験的に知覚能力を獲得したから模倣ができた、という説は弱い気がします。
従って、ロバストな音声知覚能力は、(ある程度)生来備わったものであるという仮定が出来ます。

この生来備わった音声知覚能力がどんなものか、未だ明らかにされていないと思いますが(多分。本当に?笑)、音(音韻)の距離に着目することで一つの説明を試みた研究を紹介します。

相対音感とか絶対音感のはなし

僕の妹はヴァイオリンを弾く音大生なのですが、絶対音感持ちらしいです。後天的に手に入れたのだとか。 僕は相対音感しか持っていませんので、はえ〜〜すげ〜〜という感じです。
でも考えてみてください。 ラ(A4)の音は 440Hz でド(C4)の音は 262Hz なのに、
「494Hz(実際はシ)がラの音です!」と言われて「じゃあドの音はこれ(294Hz、実際はレ)だ!」ってなる方がすごくないですか?
周波数が違うんですから、違う音に聞こえる(絶対音感の)方が普通だと思えます。
絶対音感を持っていると優れている、みたいな話は音楽界隈では多い気がしますが、実際どうなんでしょうか?
例えば、そもそも、人間以外に絶対音感を持っている動物っているんでしょうか...?鳥とかネズミとか猿とか。

f:id:manabukk:20171204003111p:plain
みんな絶対音感持ち

結論から言うと、むしろ、動物は基本的に絶対音感しか持っていないそうです。ちゃんとした相対音感を持っているのは人間くらいだとか何だとか。よく知らないけれど()

僕のように相対音感を持っている人は、262Hzの音を提示されてもドかどうか分かりません。音が同定できない。
でも、[262, 262, 392, 392, 440, 440, 392Hz] のようにストリームとして音列を提示されると、曲がきらきら星であることが分かる。
個々の音を同定出来なくても、音楽体験を楽しむことができる。

ここで、「音楽」だけでなく「音声」を認識する能力についても同様のことが言えるのではないか。 音楽において、孤立音ではなく音の動きによって曲が構成されている、動きを聴くことで曲が聞こえてくるように、 音声においても、同じことが言えるのではないかということを考えたのが音声の構造的表象の始まりだそうです。

「動きだけを抽出した時に,話者/年齢/性別を超えた頑健な不変表現が数学的に入手できる。それこそ言語である」と主張するのが音響的普遍構造である。 音声の構造的表象に基づく音声認知と外国語発音学習に対する一考察, 峯松信明+

また、個々の音でなく発話の全体構造を見る音声の認識は、幼児の言語獲得過程においても示唆があったようです。
具体的には、幼児の音声言語獲得は,個々の音を獲得する前に、語全体の音形(語ゲシュタルト)の獲得が先だと言われおり、 個々の音に対する意識が定着するのは小学校入学以降で、それまではしりとりに難儀する子もいるんだとか(記憶にないけど)。

さらには、

近代言語学の祖ソシュールが一世紀以上も前に興味深い主張をしている。The important thing in the word is not the sound alone but the phonic differences that make it possible to distinguish this word from all others. 即ち,音ではなく,音的差異の重要性を説いている。差異を捉えることで単語が同定できる,との主張である。彼はまた Language is a system of conceptual differences and phonic differences. と主張している。「言語=差異・動きのシステム」である。 音声の構造的表象に基づく音声認知と外国語発音学習に対する一考察, 峯松信明+

なんかすげえ。

"あ"という音を"あ"だと同定する能力は、言語運用に必要ないのではないか?
"あいうえお"と音ストリームを発話して初めて同定できるのではないか?

このような背景に基づいて、語ゲシュタルトを音響音声的に解釈したのが音声の構造的表象(Speech Structure)です。

音声の構造的表象(Speech Structure)

詳しくは、ここから論文を読んでください(丸投げ)。

簡単に説明すると、まず、非言語的要因による音響歪みをケプストラム空間における一次変換 \hat{c} = Ac + b で表せると仮定します。
これは、スペクトルの水平歪みと垂直歪みが、ケプストラムという音響特徴量空間内の一次変換で表されるという話なのですが、割愛。 つまり、話者Aと話者Bが同じ文を発声した時に、その変換は(局所的な、時変な)一次変換で表されるという仮定です(ざっくり)。

f:id:manabukk:20171222135254p:plain:w300
スペクトルの水平・垂直歪みと一次変換 (引用元

前章までの(音感とのアナロジーの)議論に基づいて、「あいうえお」と発話したとき、「あ->い->う->え->お」という動的な特徴量により言語情報を認識していると仮定します。 この動的な特徴量が話者に対して普遍なため、初対面の人でも発話内容を理解できる、というのが構造的表象の主張です。 基準となる音(例えば、"あ")は人によって異なるけれど、基準となる音韻から各音韻への距離は話者に依存しない(言語に依存する)ということです。
ここで、動的な特徴量を静的な特徴量(ケプストラム)の差分とすることを考えてみます。 静的な特徴量とは、各時刻において音声特徴量を表すベクトルです。つまり、音声データとはこの特徴量ベクトル列だと思ってください。 当然ですが、このデルタケプストラムは一次変換に不変ではありません。つまり、話者ごとにこの動的特徴量は変わってしまいます。 話者普遍な音声表象が得られません。どうしよう。

一次変換に不変な動的特徴量って何だろう、ということで、各音韻を点ではなく分布とみなし、その分布間距離を動的特徴量とすることを考えます。 そしてf-divergenceという分布間距離を採用すると、これが一次変換に対して不変となります(ざっくり)。

f:id:manabukk:20171222135259p:plain
f-divergence を用いた一発声の構造化(引用元

要は、各音韻の距離というものを適切に定義してあげると、音韻の距離を基準とした(相対音感的な)、話者普遍で言語依存の音声表象を作ることができる(できそう)、という話です。

実験的評価についてはここから色々読んでみてください...少なくとも限定された条件では機能しています。

自閉症失読症のはなし

極端な絶対音感を持っている人は、オーケストラやホールが変わる度に、十分な耳慣らしが必要なんだとか。 環境によって基準音が数Hz変わってしまうそうです。 絶対音感を持つと環境の変化に対して柔軟に対応できなくなるわけですが、音声における極端な絶対音感者はいるのでしょうか?
音声における極端な絶対音感者が「環境に適応できない」、とは、異なる二話者の「おはよう」という発話の同一性の認知が困難になる、つまり、初対面の人の挨拶が何を言っているかさっぱり分からない、ということではないでしょうか。

このような症状は、自閉症者に見られ、 自閉症者の中には母親の音声のみ言語内容が把握できる方がいるそうです。 自閉症の一般的(だと僕が思っている)イメージは、入力情報の整理整頓が苦手で、細かい部分に拘りがちな人です。 電話番号,住所など互いに無関係なものを膨大に記憶できる一方で,物事の因果関係や事象の抽象化が苦手、 顔の部分的特徴をよく覚える一方で,顔を見て表情や話者が同定できないとか。 そのためか、錯視などが起き難く、絶対音感を持っている人が多いんだとか。

極端な音声の絶対音感を持つと考えられる自閉症者にとって,物理的に異なる特性を持つ話者 A の音と話者 B の音を「同一音」として認知できる健常者の感覚こそ,想像を絶するものであると推測する。 勘違いか錯覚の類いではないか,と主張しても不思議ではないが,彼らは口を開かない。 何故なら,極端な絶対音感を持つ自閉症者は,音声言語を持たないからである。 二話者の「おはよう」の同一性が認知できなければ,音声言語が破綻するのは自明である。 音声言語は,ある種の勘違い・錯覚の上に構築されている,と考察することもできる。 自閉症者の中には,文字言語を通して言語コミュニケーションを開始する場合もある。 音は全て聞こえているにも拘らず,聞こえ過ぎるが故に,文字(図形)言語が第一言語となる。 音声の構造的表象に基づく音声認知と外国語発音学習に対する一考察, 峯松信明+

じゃあ逆に、音声における極端な相対音感者っているんでしょうか。 音楽において極端な相対音感者は、簡単に言えば、音楽を譜面に書き起こすことが出来ないと述べられています。
まぁでも、僕だって常に一音目をC4だと思っていいのなら、五線譜は各音の距離を表してくれているので書き起こせます。多分。頑張れば。自信ないけど。
では、音声における極端な相対音感者を考えてみます。 音声の場合はもしかすると、音声を文字に書き起こすことが出来ないのではないでしょうか...?なにしろ、文字は五線譜とは違い各音韻の距離が視覚化されていないですから。
実際、音声言語は流暢で雄弁、さらに頭もいい、しかし、読み書きが苦手(本が読めない・手紙が書けない)という人は存在し、失読症と呼ばれているそうです。 母音の多い英語を用いるアメリカでは、20%の人が失読症だとか。

私の思考が正しければ、彼らは当たり前のように存在するはずなのだが、そんな人が存在することが信じられなかったからである。 ある時、勇気を出して(恥をかくこと覚悟で)言語聴覚士に、恐る恐る、聞いてみた。「音声言語は流暢だし雄弁。頭は良いのかもしれない。でも何故か本が読めない、手紙が書けない。そういう成人が米国や英国に多かったりしませんか?え〜と、教育を受けていないとか、そういう事ではなく、彼らの認知特性として文字言語が何故か難しい……」「先生、ディスレクシアってご存知なんですか?特に音韻性のやつ。」「でぃすれ……何ですかそれ?」「変だな。先生、今、自分でディスレクシアの説明してたじゃないですか。」四一年間の人生の中で、あれほど口をあんぐり開けたことは無い。顎が外れるかと思った。これは実話である。私は彼らの存在を、音声の物理学に基づいて予言していた。 「あ」という声を聞いて母音「あ」と同定する能力は音声言語運用に必要か?, 峯松信明

最後に、現在の音声認識器について(ちょっと過激では、と思える)一言。

音響空間を N3 の部分空間に分け,各々の独立性を仮定してモデル化するのが triphone である。 環境が変わる度に耳慣らしを行なうのが音声認識装置である。 フレーム問題に端を発してロボットと自閉症児との類似性が議論されているが,音声認識装置も自閉症と類似している。 言語障害の無い自閉症アスペルガー症候群と言うが,彼らの一見奇妙な言語活動は,音声対話システムのそれと類似していることを指摘しておく。 音声に含まれる言語的情報を非言語的情報から音響的に分離して抽出する手法の提案, 峯松信明+

雑感

そのうち構造的表象の研究がしたいです。 滔々と語っときながらしてないんかいって感じですが、してません。 ほとんど引用元の言葉を借りて、あと多少の僕の感想をもって、この記事を書いていることをここに明言しておきます()

音声の構造的表象、とても面白いと思いませんか?
むっちゃ面白いと僕は思うんですけど、ぶっちゃけあまり広く研究されていません(評価はされています)。 曰く、理解や応用が難しい(とっつきにくい)というのと、理論的に固まりきっていないからじゃないか、だとか。
(自分も含めて)興味を持った人がさらなる検討をしてくれると嬉しいと(勝手に)思っています。

さいごに

この時期は、僕の記憶が正しければ、学科の後輩たちが研振りに悩んでいる頃だと思います。

この音声の構造的表象の話は某音声研究室のビッグボスの大テーマなので、興味を持った人は研究室に話を聞きに行くと良いと思います。
この記事中の言い回しに感動したあなた、かっこいいやつはほとんど受け売りなのでこれとか、冒頭に挙げたここから諸資料を読んでみると感動があります。査読に通すための書き方とはまた違うのかなとも思いますが、わいもこんな論文書きたい。
もちろん他の研究もしてますし、あと deep learning がやりたいって人は、映像系じゃなく音声を研究するのもありなんじゃないでしょうか(でぃーぷ出来ることが今も研究室の魅力になるのかはわかりませんが(笑))。

ぜひ、つらい現実(つらい)以外にも、夢や希望を抱いて配属ないし進学を迎えて欲しいです。
僕も頑張ります。

Raspberry Pi を買った話

エンジニア精神を持つ人なら誰しも,モノ作りが好きなんじゃないかと思います.
僕は昔からレゴや電子工作に興味があり,ちょっと前はバイト先で Chatwork や Backlog で振られるタスクを一元管理したくて Slack に通知やリマインドを投げてくれるボットを作ったり,そういう取り組みって楽しいですよね.

ここ最近,何かを作ってお披露目をする機会が乏しいので,何か作りたいな〜〜と思い悩んだ挙句とりあえずラズパイを買ってみました.
ラズパイとはちっちゃいコンピュータ(適当)です. IoT が流行ってる昨今,活躍する機会も増えていきそう(それを言うなら Arduino?)ですが,やはりおもちゃとしての使用例が多いのかな,と思います. 僕がラズパイを買った理由は,前々から周囲の友達には喋っていますが,ちょっとしたロボットを作りたいと思ったからです.

人工知能という言葉がバズって久しいですよね.
技術の進歩により本当に"人工知能"と言えるものが出てきたのかはさておき,画像や音声,自然言語処理,ゲームAIといった分野における進歩は著しいものがあります.
こういった技術を適用して何か面白いものを作りたいと思ったのが,ロボットを作りたいと思った動機です.
精度何%出ました!って言うだけじゃなくて,やっぱり実際に動かしてみたいじゃないですか.
ペット的な挙動のできるロボットを作ることが出来れば万々歳なのですが,途中で挫折してただのサーバと化しているかもしれません.

おらぁわくわくしてきたぞ! しばらく週末はラズパイで遊ぶぞ〜〜!

とりあえず目下,MicroSD に OS イメージを用意することろで躓いています(早い).

Tensorflow を使いこなせない話

TensorFlow ってご存知ですか. 最近 (?) 巷で流行りの人工知能(というか機械学習(というか深層技術))の実装を助けてくれるライブラリです. オープンソースですが, Google が作っているので機械学習ライブラリとしては有名だと思います.
ただこの TensorFlow, ただの機械学習ライブラリと言うには語弊がありますよね.

研究で流行りの深層技術を扱った際に TensorFlow を利用したのですが, 如何せん, TensorFlow のポテンシャルを微塵も発揮できている気がしません.
ちまちまやれば所望のアプリケーションは実装できるのですが, TensorFlow の実力は深層技術を用いたアプリケーションの実装が容易い (?) ことではないと Google さんはおっしゃられています.

TensorFlow のトップページでは,

About TensorFlow

TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google’s Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.

とあります.

要は, TensorFlow は数値計算ライブラリだと. データフローグラフに基づいた数値計算ライブラリ. それも, 様々なデバイス・計算資源のもとで動かすことが出来る. 元々機械学習の研究を目的として作られた, しかし, 応用範囲は機械学習に留まらない(これが大事).

なんかすごそう. データフローグラフに基づいた数値計算ライブラリって意味, TensorFlow を既に触った身からすると何となくだけど分かるようで分からない. 使いこなせたらすごいんだろうな.

と, いたく感動しているのですが, 実際どんなことに使えるのかがわかりません.
Tutorials では Deep Learning 系の実装以外に, マンデルブロ集合 (?) や偏微分方程式 (?) を実装 (?) して可視化するものがあります.
でもそれじゃ有り難みがわからない…もっと具体的なアプリケーションを実装して欲しい…
誰か格好良く使いこなして…そしてデータフローグラフの延いては TensorFlow の素晴らしさ教えて欲しい…

小学生みたいな感想ですが, ファイルの読み込みから書き込みまで何もかもフローグラフで表現されていて, 関数型言語みたいだと思いました.
…見栄を張りました, 実は関数型言語すら触ったことないです…

ドキュメントとチュートリアルがせっかく充実しているのだしもっとちゃんと勉強しようと思います.

以上, TensorFlow のバージョンアップに伴って既存スクリプトとの互換性が無くなり, 折角だから改めてチュートリアルをやってみたら中々コードが読み解けなくて, つらみ極まった人の戯れ言でした.

ダメ絶対音感について実験してみた その2

はじめに

この記事は ダメ絶対音感について実験してみた の続きです。
追実験とその考察についてまとめました。

追実験

追実験と言ってもやったことは、

  • UBM 学習用の音声データに JNAS と呼ばれる音声コーパスを用いた。具体的には JNAS 内の男性話者100名と女性話者100名について各話者4分程度の音声データを用意した。
  • GMM の混合数、EMアルゴリズムイテレーション回数、i-vector の次元数などのパラメータを色々と試した。
  • 集めた音声データのうち雑音やBGMが入っているデータは除外した。

という程度です。

結果

前回の実験と結果は変わりませんでした。
ただ、声優の地声発話データを各声優3発話用意して i-vector を抽出・距離を計算したところやはり声優識別は正しく出来ていました。

考察

これもう、声優がキャラクターを演じると i-vector 空間上では他の話者とみなされるほど声質が変化しているということでは!?? と思ったので、アニメや声優をよく知らない研究室の先輩に実際に音声を聞き比べてもらいました。
椎名まゆり(CV: 花澤香菜)の音声データを聞いてもらったあと、花澤香菜東山奈央のラジオ音声を聞いてもらって「どちらの声優が声を当てていると思いますか?」と質問したところ、 あまり迷わず東山奈央だと答えました。
これはプログラムの識別結果と一緒です... つまり、単純な声質だけではダメ絶対音感は成り立たないのかもしれません。
研究室の先生ともわいわい議論したのですが、i-vector の話者内変動(話者に同じ内容を読み上げてもらっても1回目と2回目じゃ絶対少しはしゃべり方変わってしまうよねってこと)を考慮して距離計算をしているのですが、声優の演技は話者内変動というには変化が大きすぎてもはや別人だと言えそうです。
これつまり声紋認証とか無理ってことかな。やろうと思えば他人の声真似ることできるわけだし。指紋認証のようにはいかなさげ。

あと大きな疑問として、何でダメ絶対音感なんて特技(?)が出きるのか、という問題が残ります。
いくつか理由を考えてみたのですが、

  • 声質以外のキャラクターの演じ方に声優の方々の個性が乗っている。
    アクセントとかの韻律情報は今回使っていないです。音声の特徴量としてmfcc(メル周波数ケプストラム係数)を用い、GMM 生成モデルを構築して i-vector を抽出しているのですが、この mfcc に韻律情報はのっていません。気になる人は頑張って調べて。
  • 複数の話者モデル(キャラクター)が存在して実はみんな同じ声優が声をあてているんだよ、ということを知っている。(つまり声優が新しい演技をしたらそのキャラクターのCVが誰かわからなくなる)
  • そもそもダメ絶対音感出来ていない。オタクの驕り。

といったところでしょうか。

ダメ絶対音感を本気でやろうと思ったら声質変換の話も混ぜてごちゃごちゃと出来ないでもないかもしれない(?)ですが、普段の研究レベルのタスクになるので、この話はここでおしまいです。

せっかくスクリプト書いたりもしたので、次は時間があれば声優の声を i-vector 空間上に埋め込んで(どの声優の声が似ているかなど)可視化してみてもいいかもしれません。

ダメ絶対音感について実験してみた

はじめに

この記事は eeic Advent Calendar 2016 10 日目の記事です。
卒論配属の研究室にちなんで、何か音声に関係あることをここでやりたいなと思ったのですが、さっと作れて見せやすいものが中々思いつかず... 迷ったのですが、タイトルの通りダメ絶対音感について実験してみたことを書こうと思います。
具体的には、既存の話者識別アルゴリズムでキャラクターの声優識別って出きるのかな、というお話です。

ダメ絶対音感

ダメ絶対音感について一応説明すると、アニメを見てる時にキャラクターの声を聞いただけでその声を当てている声優が誰か分かるやつです。

え?何言ってるかわからない?ほら、よくあるじゃないですか。ぼーっとアニメ見てると急に
\ピコーン/「あ、香菜ちゃんだ」
みたいな。無いですか。そうですか。 きもいですか。否定はしません。

この記事は絶対音感を話者認識プログラムで実装したいという野望に基づいて書かれています。
まあ、これ書いている段階でまだデータセットスクリプトも用意出来てないのですが...

ただデータをたくさん集めて DNN で識別器を学習して、だと面白くないので、i-vector なるものを使って声優の地声とキャラクターの声の距離を測ることで識別できるのか、というタスクでやってみようと思います。

話者認識(話者識別)

音声の研究は大きく、合成系と認識系に分けることが出来ます。 いや、どちらでもない研究もたくさんあるんですけど、弊研では学生をそのように二分してグループミーティングを行ったりしています。 合成系は音声合成・声質変換など音声を作ることに関する研究で、認識系は音声認識(音声→テキスト、"OK Google!"みたいな)や話者認識など音声から情報を抽出するタスクを扱うことが多いようです。

認識系の一分野である話者認識(話者識別)は、ある発話音声がどの話者の発話かを推定するというのが基本的なタスクなはずです。 雑音環境下での話者認識や複数話者が同時発話してる状況での話者認識など、話者認識にも様々なタスクがあるみたい。

話者認識のアルゴリズム

i-vector を用いた話者認識をやってみようと思います。音声認識まわりを触ってみるの初めてなので、どきどきです。

参考文献はこれ
"i-vector を用いた話者認識" 小川哲司, 塩田さやか (日本音響学会誌70巻6号(2014), pp.332-339)

ざっと説明すると各発話の音響特徴量を GMM (Gaussian Mixture Model) でモデル化し、GMM のスーパーベクトルを因子分析して各発話の低次元特徴量(これが i-vector)を得ます。 この i-vector に対してコサイン類似度などの距離尺度を用いることで話者識別を行います。実装する余裕は到底ないので、ライブラリを探してきます。

実験条件

声優

女性声優 4 名を適当に(自分や友達の趣味を元に)選びました。

各声優の地声発話データはラジオからとってきました。

キャラクター

上記声優 4 名が演じるキャラクターから選びました。

もっとバリエーションに富んだキャラクターを選びたかったのですが、BGMの無い音声が集められない問題など諸々の理由で妥協しています。
声優ごとのキャラ数や各キャラクターの発話時間もまちまちでとても雑ですが、データ集めるコストが高すぎました。まあやってみた実験ということで...

ライブラリ

使用したライブラリは ALIZE というマイナーオープンソースライブラリ。 認識系の研究をしている先輩に聞いてみましたが知らないとのことでした...ほんとにちゃんと動くのかな。汗

ただ、チュートリアルに i-vector を用いた話者識別があるので、データを差し替えて何も考えずにスクリプトを回してみます(と言いつつそもそもスクリプトが回るまでにだいぶ時間がかかってしまった(汗))。

その他

距離尺度はライブラリに存在するうち一番良さげなやつ(よく理解していないし説明もしたくない)を使います。 ハイパーパラメータはライブラリのデフォルトのまま。 付属してたサンプルデータをUBM の学習に用いたり(全部男性話者!)いろいろガバガバです。

各声優の地声データが 1 発話(無音切り出し・結合して 3 分くらい)、キャラクターの発話も 1 発話です。
要は各キャラ発話の特徴ベクトル(i-vector)が声優 4 人の地声発話の特徴ベクトルのどれに一番近いか、という話。

実験結果

声優の地声発話データで話者識別をやってみると、たまに間違えるけどおおよそちゃんと話者識別ができました。
キャラ発話データを用いた結果は散々でした...誰も彼も東山奈央さんだと識別してしまう...

各キャラクターについて、スコアがよかった声優を順に並べると、

  • 椎名まゆり ( 花澤 ) → 東山、花澤、早見、林原
  • 千石撫子 ( 花澤 ) → 東山、花澤、早見、林原
  • 綾波レイ ( 林原 ) → 早見、 東山、花澤、林原
  • 灰原哀 ( 林原 ) → 花澤、東山、林原、早見
  • 高垣楓 ( 早見 ) → 東山、花澤、林原、早見
  • 金剛 ( 東山 ) → 東山、早見、花澤、林原
  • 川島瑞樹 ( 東山 ) → 東山、花澤、早見、林原

地声データで比較した際の傾向として、

  • 花澤-東山は似ている
  • 花澤-早見は似ていない
  • 東山-早見も似ていない
  • 林原-花澤は比較的似ているが、林原-東山は比較的似ていない

という結果が見られていたのですが、それは上のキャラクター識別でも見られるような見られないような...

感想

ダメ絶対音感よりも「声優の声分布を可視化してみた」の方がお手軽でよかったなあと思いました。笑
予備実験とか追実験をする余裕が無かったためダメ絶対音感やってみたという割に大した結果出なくて残念です。この結果を持って今回の i-vector を用いた話者識別が声優の演技に対して不偏性を持っていないと結論づけるにはデータセットが汚すぎる...

何か悔しいのでもうしばらく話者識別で遊んでみようと思います(ほんとに?w)。

この話の続き
ダメ絶対音感について実験してみた その2

ゲーム制作の反省

経緯

先日、大学の文化祭で企画を展示する機会がありました。 企画の枠組みとしては学科の学術展示の内の 1 つである「AR企画」を展示することになりました。 内容としては、「(家族連れの)子供たちがARを体感できるようなゲーム」を作ろうということになり、1 ヶ月ほどゲーム制作に取り組みました。

結果的に "拡張現実" なんて大層なものを体感できるゲームを制作することはできなかったのですが、画像処理によるプレイヤーからゲームの世界への干渉がキーボードなどのボタン以外で行えるようなゲームを制作しました。 ざっくり言うならば、KinectWiiリモコンみたいな(?)ものです。 ARとは?(笑)となってしまいましたが、子供たちからは「面白かった」「これどーなってるの?」といった感想や、ヘビーリピーターとなる子がいたりと、個人的にはとても満足しました。

以下はこの企画への反省です。

反省

まず、情報工学科の学術展示のAR企画として展示しているのに、実態が子供向けゲームであるというミスマッチがありました。 たくさんの家族連れに来ていただき、1 日で100人以上遊んでいただいたので、とても企画として盛況ではありました。 その一方で、ARに興味を持って来た方もいらっしゃったので、そういう人たちに何か面白いものを見せられなかったのは残念でした。 ARの専門家を名乗るロシア美女が企画に来た時はとても焦りました(笑)(;´Д`)

次に、開発時に後輩に教えながら開発することの難しさがありました。 思ったよりも 1 年の差は大きかったようで、これくらいなら出来るんじゃないか?やってみます!というやりとりの元タスクを投げると、期限になっても進捗が無い、ということが多かったです。 結局、実装より前段階の部分(画像・効果音の用意、パラメータ調整 etc )を主にタスクとして与えたのですが、後輩が仕事を終える→自分が実装する、という流れになってしまい、自分のキャパがパンクしそうになりました。 企画全体での開発の流れをもっと検討すべきだったなぁという感じです。むずかしい。

これも開発時の反省ですが、ゲームエンジンに Unity などを使わず、1 から(主に友人が)書いたのですが、最初に仕様を相談して詰めておかなかったのが、後々影響してきました。 最終的にクラス間の依存関係とかが切り離せなくなり、読みづらいものになってしまいました。 全体で 1 万行程度なのでまだマシでしたが、半年後にはきっと自分でも読めないと思います。(笑)

最後に

作ったゲームの紹介動画(後輩が作ってくれました!)

また、学科の友達と何か作る機会があればいいな、と思います。 次こそ事前準備をしっかりとして臨みたい(毎回言ってる)。