オーディオファイルを分割して適当につなぎなおす実験――プチ成功編
オーディオファイルからデータを1サンプルずつ取り出してマルコフチェーンに落としこみ、できあがったチェーンから1サンプルずつ取り出してつなぎなおすテストの続き。
材料のオーディオは前に使った data.short。
「青い植木鉢」と言っている。
材料オーディオの属性は次の通り。長さは1.2秒。
このオーディオを SPTK の dmp コマンドでダンプする。
ueki.txt を次の Ruby スクリプトに与えると新しいオーディオが生成される。
昨日のテストで使った Chain クラスは単純マルコフ連鎖しか扱えないので、かわりに連鎖の次数を変えられる MarkovChain クラス(markov.rb)を require した。MarkovChain.new の引数で連鎖の次数を指定できる。
次数 N=1,2,3 の場合の結果は次の通り。
N=1
N=2
N=3
N=2 でそれらしい結果が出た。N=3 ではほとんど元のまま。
波形を見ておくと次の通り。
N=1
N=2
N=3
材料オーディオ
材料のオーディオは前に使った data.short。
「青い植木鉢」と言っている。
材料オーディオの属性は次の通り。長さは1.2秒。
Channels : 1
Sample Rate : 16000
Precision : 16-bit
Duration : 00:00:01.20 = 19201 samples ~ 90.0047 CDDA sectors
File Size : 38.4k
Bit Rate : 256k
Sample Encoding : 16-bit Signed Integer PCM
このオーディオを SPTK の dmp コマンドでダンプする。
dmp +s data.short > ueki.txt
ueki.txt を次の Ruby スクリプトに与えると新しいオーディオが生成される。
require 'markov'
chain = MarkovChain.new(1)
while line = gets do
chain.add line.split(/\t/)[1].to_i
end
audio = []
1.upto(20000) do
audio.push chain.get
end
print audio.pack("s*")
昨日のテストで使った Chain クラスは単純マルコフ連鎖しか扱えないので、かわりに連鎖の次数を変えられる MarkovChain クラス(markov.rb)を require した。MarkovChain.new の引数で連鎖の次数を指定できる。
次数 N=1,2,3 の場合の結果は次の通り。
N=1
N=2
N=3
N=2 でそれらしい結果が出た。N=3 ではほとんど元のまま。
波形を見ておくと次の通り。
N=1
N=2
N=3
材料オーディオ