LoginSignup
6
5

More than 5 years have passed since last update.

Kaldiプレイブック(ansible)

Last updated at Posted at 2015-08-18

AnsibleによるKaldiの環境設定

研究室に新人が来たときや新入社員が入ったとき、PCを買い替えたときなどに一から環境設定するのは面倒です。
そこで環境設定が楽にできることで有名なansibleを用いてKaldiの環境設定をVirtul Box上のCentOSに設定してみました。

Kaldiは音声認識でよく使われるツールです。

環境設定順序

1:Virtual Boxのダウンロード
2:Vagrantの設定(CentOS)
3:Ansbleの設定

1は解説が多いので下記などを参考にしてもらったら良いです。

Vagrantの設定

1:Vagrantをインストール

下記を参考にして下さい。
http://osdn.jp/magazine/15/02/13/200000

2:Vagrantの設定ファイル

下記のようなVagrantfileを作成します。
vagrant initで初期のVagrantfileを作成可能です。

エラーが出た場合の一つの解決方法


# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
        config.vm.define "ホスト名指定" do |node|
              node.vm.box = "chef/centos-6.6"
              node.vm.hostname = "ホスト名指定"
              node.vm.network :private_network, ip: "ipアドレス指定"
        end
end

ホスト名とipアドレスを指定して仮想のOSを立てます。

下記のコマンドを入力するとVagrantが立ち上がり設定が行なわれます。

vagrant up

もし404エラーが出た場合
欲しいcentosのボックスをadd で導入します。

vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.6-x86_64-v20150426.box

導入されたosの名前を確認します。

vagrant box list

下記に示されるところに導入したボックス名を記入します。

node.vm.box = "chef/centos-6.6"

再度、立ち上げを行います。

vagrant up

sshでansibleに接続するには下記ので設定が必要なので予め設定(登録されたipアドレスがvagrantファイルと同一かチェックする必要あり)

 vagrant ssh-config --host 192.168.33.10 >> ~/.ssh/config

Ansibleの設定

Ansibleで設定するホストを指定するため下記のファイルを作成

ansible_hosts

[先ほど指定したhost名]
先ほど指定したipアドレス ansible_ssh_private_key_file=Vagrantで作成されるプライベートキー ansible_ssh_user=vagrant

プライベートキーは下記のいずれかの直下にプライベートキーが作成される。

1:~/.vagrant.d/
2:Vagrantを設定したフォルダ/.vagrant/machines/作成したホスト名/virtualbox/

どちらかのプライベートキーを使用する。

過去にvagrantを使用してhostを作成したこごtが場合はipアドレスを変更しないとアクセス出来ないので注意が必要です。

ここからkaldiの設定を行なうansibleのymlを作成

kaldi.yml

---
- hosts: 設定したホスト名

  user: vagrant
  sudo: yes

  tasks:
    - name: Upgrate Package
      yum: name=* state=latest
      sudo: yes
      tags: update
    - name: Install Package
      yum: name={{ item }} state=present
      sudo: yes
      when: ansible_os_family == 'RedHat'
      with_items:
              - atlas-sse3-devel
              - atlas-devel
              - nkf
              - git
              - gcc-c++
              - zlib-devel
              - automake
              - libtool
              - autoconf
              - patch
              - subversion
              - lynx
              - graphviz
              - bc
              - vim
      tags: Install
    - name: Download Kaldi
      git: repo=https://github.com/kaldi-asr/kaldi.git dest=/home/vagrant/kaldi accept_hostkey=yes
      sudo: yes
      tags: kaldi
    - name: Install Kaldi
      command: make j 4 chdir=/home/vagrant/kaldi/tools
      sudo: yes
      tags: kaldiInstall
    - name: Install Kaldi2
      command: ./configure  chdir=/home/vagrant/kaldi/src
      sudo: yes
      tags: kaldiInstall2
    - name: Install Kaldi3
      command: make -j 4 depend chdir=/home/vagrant/kaldi/src
      sudo: yes
      tags: kaldiInstall3
    - name: Install Kaldi4
      command: make -j 4 chdir=/home/vagrant/kaldi/src
      sudo: yes
      tags: kaldiInstall4 

RNN部分でエラーが出るので切り分けました。原因が分かったら更新します。

    - name: Install RNN
      command: ./install.sh  chdir=/home/vagrant/kaldi/tools
      sudo: yes
      tags: InstallRNN
    - name: Install RNN2
      command: ./install_atlas.sh  chdir=/home/vagrant/kaldi/tools
      sudo: yes
      tags: InstallRNN2

言語モデルのツールでsrilmを使用する場合は別途申請が必要だが、RNNの場合は申請しなくても良い。

SRILMダウンロードページ
http://www.speech.sri.com/projects/srilm/download.html

下記のコマンドを実行するとansibleが環境を作成してくれる!!

ansible-playbook -i ansible_hosts kaldi.yml

他にも機械学習、音声認識、自然言語処理で環境が面倒だと思う方はansibleの導入を検討してみてはいかがでしょうか?

PS:

仮想環境にアクセスしたいとき

ssh IPアドレス -i プライベートキー

もしくは

vagrant ssh host

ファイルを送りたいとき

scp -F ~/.ssh/config ファイル名 vagrant@host:~/

もしくは

sudo sftp -F ~/.ssh/config -i .vagrant/machines/host/virtualbox/private_key 192.168.22.10

ansible トラブル解決参考サイト

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5