読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習、Deep Learning、Kerasに関する記事が多いです。



統計的声質変換 (7) GMMによる声質変換

統計的声質変換 (6) 声質変換モデルの学習の続き。今回が統計的声質変換シリーズの最終回です。今回は、前回学習した声質変換モデルを使って本当に声が変換できるか試してみたい。前回やったGMMの学習でにおける各コンポーネント の と と が学習データから…

統計的声質変換 (6) 声質変換モデルの学習

統計的声質変換 (5) scikit-learnのGMMの使い方(2015/3/22)の続き。 今回は、いよいよ声質変換モデルを混合ガウスモデル(GMM)で学習しよう!第3回目(2015/3/4)で述べたようにclbさんの声をsltさんの声に変換することを前提に進める。 今まで「声質変換…

統計的声質変換 (5) scikit-learnのGMMの使い方

統計的声質変換 (4) パラレルデータの作成(2015/3/10)の続き。 今回は、いよいよ声質変換モデルを混合ガウスモデルで学習しよう!と思ったのだけれど、その前にscikit-learnのGMMライブラリの使い方を簡単にまとめることにした。本格的に使う前に簡単なデ…

統計的声質変換 (4) パラレルデータの作成

統計的声質変換 (3) メルケプストラムの抽出(2015/3/4)の続き。 前回は変換元のclbさんと変換先のsltさんのメルケプストラムを一括抽出した。前回の最後の結果を見ると、二人のしゃべる速さが違うためメルケプストラムが時間方向にずれていることがわかっ…

統計的声質変換 (3) メルケプストラムの抽出

統計的声質変換 (2) ボイスチェンジャーを作ろう(2015/2/25)の続き。 前回は音声から抽出したメルケプストラムやピッチのパラメータを直接いじることで簡単なボイスチェンジャーを作った。今回からAさんの音声をBさんの音声に変換する規則を機械学習の手法…

統計的声質変換 (2) ボイスチェンジャーを作ろう

統計的声質変換 (1) ロードマップ(2015/2/11)の続き。 統計的声質変換の第二回ということでまずは統計的じゃない声質変換の枠組みで簡単なボイスチェンジャーを作ってみたい。いきなり本題とずれているけれどここをしっかり理解できていないと統計的な方は…

統計的声質変換 (1) ロードマップ

Pythonで音声信号処理(2011/5/14)のつづき。 @r9y9さんの以下のチュートリアル記事をきっかけに興味をもった統計的声質変換の実験をしてみたい。統計的声質変換とはAさんの声を別のBさんの声に変換する技術のこと。 統計的声質変換クッソムズすぎワロタ(…

Pythonに似ているようで微妙に違うJuliaを勉強した

前に一時期だけ音声信号処理を勉強していた(2011/5/14)ことあったけれど、その一環として@r9y9さんの統計的声質変換のチュートリアルをやってみようと思っている。統計的声質変換というのはAさんの声をBさんの声に変換するための統計モデルを学習するタス…

SPTKの使い方 (10) ボコーダーで遊ぼう

SPTKの使い方 (9)(2013/3/2)の続き。今回は、分析合成音のパラメータを変えることで、高い声、低い声、かすれ声、ロボット声、子供声、深い声などいろんな音声に変換してみます。この実験はSPTKのマニュアルの8章を参考にしています。 オリジナルの音声 今…

SPTKの使い方 (9) メル一般化ケプストラム分析合成

SPTKの使い方 (8)(2013/2/16)の続き。今まで紹介したメルケプストラム分析(2013/1/19)やLPC分析(2013/2/16)を一般化したメル一般化ケプストラム(Mel-Generalized Cepstrum: MGC)分析の実験をしてみます。似たような名前のパラメータがたくさんあって…

SPTKの使い方 (8) LPC・PARCOR・LSP分析合成

SPTKの使い方 (7)(2013/1/19)の続き。前回は、メルケプストラムというスペクトルパラメータを用いたメルケプストラム分析合成の実験をしました。今回は、別のスペクトルパラメータであるLPC、PARCOR、LSPを用いた分析合成を実験してみます。PARCORとLSPは…

メルケプストラム次数

SPTKの使い方 (7) メルケプストラム分析合成(2013/1/19)の続き。メルケプストラム次数を変えたときにスペクトル包絡と分析合成音がどのように変化するか実験してみました。前回書いた mcep.py というスクリプトを使います。SPTKのmcepコマンドのメルケプス…

SPTKの使い方 (7) メルケプストラム分析合成

SPTKの使い方 (6)(2012/8/5)の続き。今回は、SPTK(2012/7/1)を使って音声合成の実験をしてみました。ここで言う音声合成は、テキストを音声に変換するTTS(Text-to-Speech)ではなく、分析合成と呼ばれるものです。分析合成では、人間の音声からパラメー…

類似楽曲検索システムを作ろう

もう1年以上かけて音声信号処理の勉強をしてきました(Pythonで音声信号処理)。ここらで具体的なアプリケーションとして類似楽曲検索の実験をしてみたのでレポートをまとめておきます。言語はPythonです。前に 類似画像検索システムを作ろう(2009/10/3) V…

SciPyでベクトル量子化

ベクトル量子化(Vector Quantization: VQ)とは、ベクトルで表されたデータ集合を有限個の代表的なパターン(セントロイド)に置き換える処理のことです。代表パターン(セントロイド)のリストはコードブック(code book)と呼ばれます。また、クラスタの…

SPTKの使い方 (6) MFCCの抽出

SPTKの使い方 (5)(2012/8/1)の続き。今回は、音声認識の特徴量としてよく使われるメル周波数ケプストラム係数 MFCC(2012/2/25)をSPTKで抽出してみました。使うコマンドは、mfccです*1。 x2x +sf < data.short| frame -l 640 -p 160 | \ mfcc -l 640 -f 1…

Earth Mover's Distance (EMD)

Earth Mover's Distance (EMD) について調べたことを整理しておきます。EMDは、ユークリッド距離のような距離尺度の一つで、二つの分布の間の距離を測ることができます。言語処理ではあまり聞いたことなかったのですが、画像処理や音声処理では比較的有名な…

SPTKの使い方 (5) フレーム分割

SPTKの使い方 (4)(2012/7/16)の続き。今回は、音声波形をフレーム単位に分割するSPTKのframeコマンドを使ってみます。音声でフレームというと、信号の複数のサンプルを一定幅でまとめたものを指すことが多いと思います。前に実装した短時間フーリエ変換(2…

SPTKの使い方 (4) フーリエ変換

SPTKの使い方 (3)(2012/7/7)の続き。今回は、SPTKでフーリエ変換してみます。SPTKには、fftとfftrという2つのコマンドがありました。fftが複素信号用、fftrが実信号用です。音声信号は実信号なので今回はfftrを使います。 サイン波の作成 まずFFTするサイ…

SPTKの使い方 (3) ピッチ抽出

SPTKの使い方 (2)(2012/7/4)の続き。今回は、SPTKマニュアルの2章のピッチ抽出(pitch extraction)を試してみます。ピッチとは声の高さのことで、基本周波数やF0とも呼ばれます*1。ピッチは、人間の発声におけるアクセント、イントネーション、感情表出な…

SPTKの使い方 (2) 音声波形の切り出し

SPTKの使い方 (1)(2012/7/1)のつづき。今回は、音声波形の一部を切り出すbcutコマンドを使ってみます。これよく使うので便利です。音声ファイルdata.short(rawファイルです)の1000サンプル目から11000サンプル目を切り出したいときは、 bcut +s -s 1000 …

SPTKの使い方 (1) インストール・波形描画・音声再生

SPTK(Signal Processing Toolkit)という音声信号処理のツールの使い方を紹介していきます。SPTKには、音声を分析するための豊富なコマンドが約120個も提供されています。今までPythonで窓関数、FFT、MFCC、LPCなどを苦労して実装してきました(Pythonで音…

線形予測分析(LPC)

Pythonで音声信号処理(2011/05/14)の第20回目。以前、ケプストラム分析(2012/12/21)のところで声道の特性を意味するスペクトル包絡を求めた。今回は、線形予測分析(Linear Predictive Coding)という別の手法でスペクトル包絡を求めてみた。この方法で…

メル周波数ケプストラム係数(MFCC)

Pythonで音声信号処理(2011/05/14)の第19回目。今回は、音声認識の特徴量としてよく見かけるメル周波数ケプストラム係数(Mel-Frequency Cepstrum Coefficients)を求めてみました。いわゆるMFCCです。MFCCはケプストラム(2012/2/11)と同じく声道特性を…

ケプストラム分析

Pythonで音声信号処理(2011/05/14)の第18回目。今回は、音声の特徴量としてよく使われるMFCC(Mel-Frequency Cepstrum Coefficients: メル周波数ケプストラム係数)抽出に向けた第一歩としてケプストラム分析を試しました。Wikipediaでケプストラムの定義…

IIRフィルタ

Pythonで音声信号処理(2011/05/14)今まで作ってきたFIRフィルタ(2011/10/23)に続いて、今回は、IIR(Infinite Impulse Response)フィルタをためしてみよう。IIRフィルタでもローパス、ハイパスなどのようなフィルタが作れる。FIRフィルタよりタップ数を…

SciPyのFIRフィルタの使い方

Pythonで音声信号処理(2011/05/14)今まで、5回に渡ってFIRフィルタの例であるローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、バンドストップフィルタを実装してきました。内部で何をやっているか勉強になって大変面白かったんだけど、当然なが…

バンドストップフィルタ

Pythonで音声信号処理(2011/05/14)バンドパスフィルタ(2011/10/30)の続き。今回は、バンドストップフィルタ(バンドリミットフィルタ、バンドエリミネーションフィルタという呼び方もあるとのこと)を実験します。バンドストップフィルタは、バンドパス…

バンドパスフィルタ

Pythonで音声信号処理(2011/05/14)ハイパスフィルタ(2011/10/29)の続き。今回は、バンドパスフィルタを実験します。バンドパスフィルタは、エッジ周波数を2つ指定します。ある周波数からある周波数までの領域を通すようなフィルタです。式で書くととなり…

ハイパスフィルタ

Pythonで音声信号処理(2011/05/14)ローパスフィルタ(2011/10/28)の続き。今回は、ハイパスフィルタを実験します。逆フーリエ変換の式が違うだけでほとんどローパスフィルタと同じなんだけどね。ハイパスフィルタは、ローパスフィルタの逆でエッジ周波数f…

ローパスフィルタ

Pythonで音声信号処理(2011/05/14)FIRフィルタ(2011/10/23)の続きです。今回は、FIRフィルタの代表例であるローパスフィルタ(LPF)を実装していきます。フィルタの設計には、Z変換という技術が必要になります。元の空間では難しい問題をZ変換で別の空間…

FIRフィルタ

Pythonで音声信号処理(2011/05/14)今回からしばらくディジタルフィルタの実験をいろいろやろうと思います。ディジタルフィルタは、 乗算器 加算器 遅延器 の3つの要素の組み合わせによって構成されます。この組み合わせ方によって、 FIR(Finite Impulse R…

ディストーション

Pythonで音声信号処理(2011/05/14)今回は、ディストーション(distortion)というサウンドエフェクトを試してみます。ディストーションは、音を極端に増幅し、わざとクリッピングを発生させることで、歪んだ(ひずんだ)音色を作る技術とのこと。普通の音…

サウンドスペクトログラムに画像を埋め込む

Pythonで音声信号処理(2011/05/14)今回は、スペクトログラムを使って遊んでみました。サウンドスペクトログラムって何って人はこちらへ。Pythonでサウンドスペクトログラム(2011/10/1)。なんとスペクトログラムに任意の画像を埋め込んだ音声が作れるとの…

Pythonでサウンドスペクトログラム

Pythonで音声信号処理(2011/05/14)今回は、さまざまな音声のスペクトログラム(spectrogram)を求めてみたいと思います。科学捜査班が声紋分析で使っているやつですね。こういうの。名前がスペクトログラムってくらいなのでフーリエ変換で求めるスペクトル…

短時間フーリエ変換

Pythonで音声信号処理(2011/05/14)今回は、短時間フーリエ変換(Short-Time Fourier Transform: STFT)を実装してみます。音声信号スペクトルの時間変化を解析する手法です。ある一定の長さの信号サンプルを切り出し、それに窓関数をかけてからフーリエ変…

ディレイとリバーブ

Pythonで音声信号処理(2011/05/14)今回は、サウンドエフェクトのアルゴリズムであるディレイとリバーブを試してみます。私は、PCで音楽を聴くとき、いつもコンサートホールのサウンドエフェクトをかけて聴いていますがそれと同じ効果を自分で実装してみた…

高速フーリエ変換(FFT)

Pythonで音声信号処理(2011/05/14)今回は、高速フーリエ変換(FFT)を試してみます。FFTとはFinal Fantasy Tactics Fast Fourier Transformの略でその名の通り、前回の離散フーリエ変換(DFT)を大幅に高速化したしたアルゴリズムです。一般にフーリエ変換…

離散フーリエ変換

Pythonで音声信号処理(2011/05/14)今回は、信号処理の肝とも言える離散フーリエ変換(Discrete Fourier Transform: DFT)を試してみようと思います。ときどき感動するアルゴリズムに出会うけれど、フーリエ変換はその一つです。最初に考え出したフーリエさ…

正弦波の合成

Pythonで音声信号処理(2011/05/14)今までは、既存の音声ファイルを再生したり、波形を見たりしてきましたが、今回は、音の波の基本となる正弦波や正弦波を合成して作れる三角波、矩形波、ノコギリ波などを自前で作って音を鳴らしてみたいと思います。正弦…

波形を見る

Pythonで音声信号処理(2011/05/14) サイン波 次は音の波をプロットして目に見えるようにしてみます。グラフの描画にはPythonのmatplotlibを使います。WAVEファイルには音をディジタル化(標本化 + 量子化)したデータがそのまま含まれているのでそれを読み…

WAVEファイルの再生

Pythonで音声信号処理(2011/05/14)まずは基本ということでWAVEファイルを再生してみます。Pythonにはwaveモジュールが用意されていてWAVEファイルの読み書き、情報の抽出はできます。しかし、waveモジュールだけでは音を再生できないのでpyaudioという別の…

Pythonで音声信号処理

今年の目標(2011/1/1)の1つに音声認識技術の深耕というのを立ててます。いきなり音声認識をやるのは知識不足でかなり大変だということが分かったので、まずは音声のいろんな性質や信号処理の技術を一つ一つ試しながら習得していくことにしました。音声信号…

last.fm

言語情報処理ポータルのコラム記事読んでいてlast.fmという面白いアプリケーションを知った。このアプリケーションはいわゆるインターネットラジオというやつで楽曲がフリーで聴ける。このラジオの特徴は選曲のパーソナライゼーションが可能なこと。流れる曲…