8000 GitHub - chcbin/stav: Statistical voice conversion written in Go for signal processing backend, Python for model training and parameter conversions
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ stav Public
forked from r9y9/stav

Statistical voice conversion written in Go for signal processing backend, Python for model training and parameter conversions

License

Notifications You must be signed in to change notification settings

chcbin/stav

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STAV


VoiceConversion.jl を作る前に、統計的声質変換の実験に使っていたコードです。僕のお遊び用です。信号処理バックエンドはGo、モデルの学習、変換はPythonで書いていました。VoiceConversion.jlのほうが色々改善されていますが、このコードも役に立つこともあるのかなぁと思いながら、とりあえずアゲてみました。

  • [Go] Feature extraction from speech signals
  • [Go] Parallel data generation
  • [Python] Model training
  • [Python] Speech paramter conversion
  • [Go] Waveform generation

すべてをフルスクラッチで書くのは大変なので、楽をするために、信号処理のバックエンドにはSPTKとWORLDを使っています。Cで書きたくなかったので、Goでラップしたものを使っていました。

学術的な新しさはありませんので、ご了承ください。

おぼえがき

音声からの特徴抽出

gostav/extact_mcep.go を使って、wavファイルからWORLDベースのメルケプストラムを抽出します。scripts/extract_mcep.py を使えばOK

例.

python  extract.py --src_dir=~/data/cmu_arctic/cmu_us_clb_arctic/wav --dst_dir=~/data/vc/clb
python  extract.py --src_dir=~/data/cmu_arctic/cmu_us_slt_arctic/wav --dst_dir=~/data/vc/slt

データはJSONで出力されます。フォーマットは、コード参照(おぼえてない)

パラレルデータを作る

gostav/align.goを使って、DPマッチングを行います。scripts/parallel.pyを使えばOK。

python parallel.py --src_dir=~/data/vc/clb --tgt_dir=~/data/vc/slt --dst_dir=~/data/vc/clb_to_slb --diff

diffとつけると、差分特徴量として、パラレルデータを保存されます(これ設計が悪い、本当は学習時に、差分特徴にするか選択出来たほうがよい。VoiceConversion.jlではそうしました)

パラレルデータもJSONで出力されます。フォーマットは、コード見てくださいおねがいします

変換モデル学習

GMMのみサポート

python train.py --conf recipes/settings.yaml 

学習条件は、yamlで書けるようにしていました。しばらく待つと、デフォルトの設定では gmm_clb_to_slt.pklというファイルにGMMのパラメータが保存されます。

パラメータ変換

学習したGMMを元に、メルケプストラムを変換します。

python vc.py --gmm gmm_clb_to_slt.pkl ~/data/vc/clb/arctic_a0028.json converted.json   

convered.json に変換後のパラメータが出力されます。

音声波形の再合成

python diff_synthesis.py --input ~/data/cmu_arctic/cmu_us_clb_arctic/wav/arctic_a0028.wav --mcep converted.json

converted.wav ができるので、聴いてみる。

以上、適当に覚えてることを書いてみました。

About

Statistical voice conversion written in Go for signal processing backend, Python for model training and parameter conversions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.6%
  • Go 26.4%
0