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

初心者エンジニアが何か書く

〜技術ブログメイン〜

【VMWare Host Client】仮想マシンをコピーする方法

やりたいこと:

無償版のVMWare ESXi6.0U2を使用.
既存の仮想マシンのクローンを構築する.
 
ここでのコピー対象の仮想マシン名:仮想OS_192168_11_1

f:id:inobo52:20170312190916p:plain

仮想マシンには,TEST_FILEを設置してある
 
・手順1:コピー対象の仮想マシンのvmdkを確認する.
 
vmdkとは仮想マシンのディスクのこと.
個々の仮想マシンは自分のvmdkを保有している.
 
・vmdkを確認できる場所は以下に記載
ホスト>ストレージ>ストレージ名(ここではdatastore1)

f:id:inobo52:20170312190851p:plain

データストアブラウザ
f:id:inobo52:20170312190750p:plain
 ↓

f:id:inobo52:20170312190936p:plain

f:id:inobo52:20170312190950p:plain

これがvmdk.これを複製する.
 
❏注意:
データストアブラウザ上ではvmdkは複製できません.
 
 
手順2:ESXiのSSHを有効化する
以下の場所で有効化を選択する.
ホスト>右クリック>サービス>SSHの有効化

f:id:inobo52:20170312191001p:plain

 
 
手順3:ESXiにSSHでログインする
ssh ユーザ名@ESXiのIPアドレス
 f:id:inobo52:20170312191025p:plain
 
手順4:vmdkをコマンドでコピーする.
まず指定の場所に移動.
cd /vmfs/volumes/データストア名/仮想マシン
f:id:inobo52:20170312191045p:plain
コピーする.
vmkfstools -i コピーしたいvmdk名 ファイル名前
f:id:inobo52:20170312191058p:plain
コピー完了
確認する

f:id:inobo52:20170312191109p:plain

コピーしたcopied_vm.vmdkがある.
 
 
手順5:仮想マシンを構築する
新規仮想マシンの作成

f:id:inobo52:20170312191131p:plain

初期設定のハードディスクを消して,
既存のハードディスクを追加する
f:id:inobo52:20170312191150p:plain
さっきのvmdkを選択する

f:id:inobo52:20170312191209p:plain

 
以上.
他にネットワークの設定やメモリの容量など同じにしたい場合は,
追加で設定必要がある.
 
※構築直後に,エラーメッセージ「デプロイに失敗しました」が表示されるが,仮想マシン起動には問題なさそう.
 
コピーした仮想マシンを起動すると,コピー元と同じ状態であることが確認できる.

f:id:inobo52:20170312191222p:plain

 
❏ 追記:
vmxファイルという仮想マシンの設定情報を格納するファイルがある.
このファイルにはvmdkのパスも持っているため,その設定を変えてから
登録するとvmdkだけではなく諸々の設定もコピーすることが可能.
 
以下のように,vmxファイルにはvmdkのパスが記載されている.
f:id:inobo52:20170313224840p:plain
他にもnvram.displayName,derivedName,migrate.hostlogなども
名前変更すると良さそう.

f:id:inobo52:20170313225547p:plain

後は「既存の仮想マシンの登録」で,さきほどのvmxファイルを指定

f:id:inobo52:20170313225014p:plain

 以上.
 

LinuxにItamaeをインストールしてみた

すごい久しぶりに記事追加.
自分用メモがたまたま誰かに役立ったら良いかなと思い投稿.
 
この記事の内容
  1. itamaeをインストールする
    1. Ruby(gem)をインストール
    2. Bundlerをインストール
    3. Itamaeをインストール
 
 
インストール先のOS:
 
 

  
Itamaeのインストール方法について簡単にぐぐってみたら
Rubyのパッケージ管理ツール「gem」が必要みたいです.
そして,その「gem」はRubyをインストールすれば標準で使えるみたいです.
 
rubyが入っているか確認すると
 
Ruby?そんなもんはねーという回答をいただきました.
なので,rubyを入れていきます.
 
2.1.Ruby(gem)をインストール
 
Linux関係のOSにrubyを入れるにはいくつか方法があるみたいです.
 
 
・RVMとrbenv
複数のRubyのバージョンを管理・インストールができるツールみたいです.
複数のバージョンを使い分けて開発していく場合や
長期間のRubyで開発をしていく場合には,あると便利な必要なツールだと思います.
 
・パッケージ管理ツール
Ruby以外にもいろんなツールを簡単に導入できる初心者に優しいツール.
ただ導入できるツールは基本的に古いバージョンばかりなので,
常に最新環境を求めていく方々には都合の悪いツール.
 
・ソースからのビルド
とても原子的なツールのインストール方法.
ただ,どんなツールのインストールにも通ずるやり方だと思っていますので,
私のような初心者には,一度経験すべきだと思います.
(マイナーなツールをインストールするときは基本このやり方だと思います)
デメリットとしては,インストールの設定やツールの管理の多くを
自分で行う必要があるので,管理方法を何かしら工夫する必要がありそうです.
 
 
今回はパッケージ管理ツールを使って簡単にRubyを導入します.
コマンドはこんな感じ
 
Is this OK? [y/N] (本当にインストールしますか?)と表示されるので,y と入力する
 
Rubyインストール完了.めちゃくちゃ簡単.
 
gemもインストールされている確認.
 
2.Bundlerのインストール
 
gemはRuby周りのパッケージの導入・削除を行うツールでしかないので,
バージョン管理は自動では一切してくれないです.
なので,バージョン管理をしてくれるツール「bundler」を別途インストールします.
(実はBundleなしでインストールしましたが,バージョン関係で途中コケました….)
 
Bundlerのインストール完了.
 
Bundlerの使い方は以下を参照しました.詳細はこっちみてね.
 
bunlder init 
するとGemfileが生成されます.
 
 
Gemfileの中身


このGemfileにインストールしたい「パッケージ名」と「バージョン」を書いて実行すると,
そのとおりにインストールしてくれます.
 
3.Itamaeをインストール
 
やっとItamaeをインストールします.
Itamaeは以下のように
 
※ thor のバージョンを0.19.1に指定している理由は,以下URLを参照.
 
bundleを使ってインストール
 
実行結果を確認.ちゃんとthorは0.19.1がインストールされている.
 
ちなみに,
~/binディレクトリには,Gemfileからインストールしたツールのバイナリファイルが格納されている.
Gemfile.lockは,ツールの依存関係が明記したファイルとなっている.
 
 
この時点で,~/.bash_profileの中身が更新されているので一度読み込む.
こうすることで,Itamaeコマンドを実行したときに,~/bin配下のバイナリファイルも探してくれる.
読み込んだ後に,itamaeも実行.
 
Itamaeインストール完了.
 
 
ちなみに,.bash_profileを読み込まずに itamaeコマンドを実行すると
パスが通っていないので,以下のように表示される.
 
 
今日はここまで.次回はItamaeを使って同じ環境を複製します.
 

Objective-CでReKognition使って顔認識する(ios7)

楽天カフェのハッカソンでReKognition(顔認識のWebAPI)を使っているチームがいくつかあったので、自分もiPhoneで顔認識させてみた。


orbe.us | ReKognition - Welcome to Rekognition.com

 

ReKognitionは単に画像から顔認識して顔情報(顔の部品の位置/年齢/表情/性別など)を取得できるだけじゃなくて,顔画像の学習とクラスタリングが可能.

 

なので,今回は「顔と名前」をReKognitionのサーバーに保存・学習させて,クラスタリングさせてみた.

 

おおざっぱな流れ:

  1. ReKognitionのSDKを導入する
  2. ReKognitionで「顔と名前」を追加・学習
  3. 実装(AVFoundationでカメラ起動・顔認識)

 

1.ReKognitionのSDKXcodeに導入する

上記のサイトでSDKをダウンロード.

f:id:inobo52:20141115190158p:plain

ダウンロードしたZIPを開くと,サンプルのXcodeプロジェクトがある.開く.

f:id:inobo52:20141115190445p:plain

重要そうなコードはViewController.mのここ緑のコードで画像をリクエストする.

レスポンスで受け取ったJSON文字列をパースすれば使えるようになる.

README.mdの中を見れば,他に使えるコード書いてある.

f:id:inobo52:20141115191552p:plain

サンプルプロジェクトにある以下のファイル集を
Xcodeに移せば,上記の緑コードが使える.

f:id:inobo52:20141115195316p:plain

 

2.ReKognitionで「顔と名前」を追加・学習させる

まずアカウントを登録.

f:id:inobo52:20141115192840p:plain

次に,Go to Face Control Panel に移動して「顔と名前」を追加登録.

f:id:inobo52:20141115193340p:plain

Trainを押すと学習開始.顔認識の準備完了.

NameSpaceとUserIDは後の実装で使うので覚えておく.

f:id:inobo52:20141115193807p:plain

3.実装

フレームワーク.いろいろ試行錯誤してたら,たくさん導入してた.

多分いくつか不必要なのがある.

f:id:inobo52:20141115194536p:plain

ストーリーボード.

顔認識ボタンを押すと,表示中のImageViewで顔認識する.

認識して名前が取得できたら,名前を表示する.

f:id:inobo52:20141115194922p:plain

コード.RekognitionSDK.m に API_Key と API_Secret を入力.

f:id:inobo52:20141115200155p:plain

コード.ヘッダーファイルとメソッドファイル

 

 

 

顔のクラスタリングが出来たら,色々できそうですね.

Objective-Cで音声認識 (ios7)

Docomoさんがios7.0用に音声認識SDKを提供してくれているので使ってみた.

 

手順1:Docomoさんのページにログインする(初めてなら新規登録)

ログイン | docomo Developer support | NTTドコモ

f:id:inobo52:20141111020022p:plain

 

手順2:アプリケーション利用申請をする

ログインして「マイページ」を選択するとAPIの申請が可能

f:id:inobo52:20141111020714p:plain

申請の際には,アプリの名前や説明が必要.個人的に戸惑ったのは以下の2点.

iosのアプリに組み込むので「ネイティブ」を選択.

そして,コールバックURLは https://dummyでOKです.

f:id:inobo52:20141111020812p:plain

後は適当に入力して申請OK.

そしたら,APIを利用するときに使う「api_key」がもらえます.

api_keyはこんな感じの数字と文字列の集まり.(一部隠しています)

f:id:inobo52:20141111021316p:plain

 

手順3:SDKを導入するために,まずダウンロード

 

このページの「最新版をダウンロード(ZIP)」でダウンロードする.

API/ツールの概要 | docomo Developer support | NTTドコモ

f:id:inobo52:20141111022530p:plain

以下のURLからも2014年11月の時点で最新版のSDKをダウンロードできます.

https://devsite-pro.s3.amazonaws.com/contents_file/SpeechRecSDK_iOS_v1.0.0.zip

ダウンロードしたら,ドキュメントに沿ってSDKの導入をします.

 

手順4:「Build Setting」 で設定

f:id:inobo52:20141111022852p:plain

手順5:フレームワークを設定

 

f:id:inobo52:20141111023048p:plain

 

手順6:以下の3つのファイルを自分のXcodeにドラッグ&ドロップする

・libSRClientHelper.a

・model_140319.dat

・SRClientHelper.h

このときにAdd to targetsにチェックをすること!

f:id:inobo52:20141111023203p:plain

 

手順7:[重要] Build Setting で Other Linker Flags に -ObjC を記入

これをしないと,実行したとき 以下のエラーが出る.
 [NSConcreteMutableData SR_stringByBase64Encoding] unrecognized selector sent to instance. 

f:id:inobo52:20141111023633p:plain

 

手順8:実装する

 

 

 

手順9:結果

起動後にボタンを押してから「やっほー」としゃべった結果がこちら.

f:id:inobo52:20141111024100p:plain

 

 

GoogleSpeechAPIで音声をささっとテキスト化

音声をテキスト化するRESTのAPIって全然ない.

唯一GoogleSpeechAPIだけ見つかったので実装した.

その方法を紹介.

 

手順1:SpeechAPIの利用準備

 

SpeechAPIは特別なGoogleAPI.もともと非公認なAPI(今も非公認?)だけあって,利用するまでの方法が他のGoogleAPIと少し違う.

 

まず始めに,Chromium-devグループに加入します.加入には特に申請手続きは必要なく,簡単に登録できます.


Google グループ

https://console.developers.google.com/project?authuser=0

 

次に,GoogleConsoleを開いて,自分のプロジェクトの作成します.

そしたら,GoogleSpeechAPIの利用ON,公開キー(ブラウザ)を取得します.

f:id:inobo52:20141028023701p:plain

 

f:id:inobo52:20141028024029p:plain

 

手順2:Webの記事を参照する

以下の記事を参照しました.

mobilebiz: TwilioとGoogle Speech APIを使った音声変換について

個人的に一番参考になった記事.これをもとにTwilioの音声データをテキスト化しましたので,必要そうな情報が取得できました.ただ,この記事は2013年度のもので若干古め.実際,GoogleSpeechAPIは今はversion2だが,この記事はversion1である.

 


gillesdemey/google-speech-v2 · GitHub

最新のGoogleSpeechAPIのversion2のドキュメントが書いてある記事.コードは特にないので,コピペとかはできないが,仕様の参考にはできる.

 

How to convert .flac to .mp3 using PHP - Stack Overflow

GoogleSpeechAPIを使って音声ファイルをテキスト化にするには,音声ファイルの拡張子flac にする必要があるみたい.なので,拡張子の変換の際に ffmpeg コマンドを利用した.別に ffmpegじゃなくて良い.

 

手順3:ちょいと実装

google_speech_api.php  と  を二つ実装

 

PHPで音声結合や合成など加工するときに使えるサイト

PHPで録音した音声を結合したり,音声にBGMを付けたりできないかなと思ってGoogle先生に調べたら,いろいろでてきた.

 

 

MEMO/PHP/WAVE - YOROZU-1

このサイトは音声合成・結合・音程変更ができるPHPソースコードを唯一アップしているサイト.動作確認済みで,すごく便利!

 

ffmpegやmp3wrapコマンドをインストールして実行させる

 

フェード処理・ローパスやハイパスのフィルタができる.

もちろん結合とかもできる.持っていて損はないかもコマンド.

 

いろいろ音質操作できるっぽい

 

ffmpegをインストールから基本操作まで書いてある

http://linux-suomi.net/modules/sinyD0/index.php?id=18

 

ffmpeg で時間単位やフレーム単位でカットする方法 : ニコニコ動画研究所

 

ffmpegphpラッパーしたやつ

ffmpeg-php

 

ffmpeg-phpで動画データを取得

PHPプロ!TIPS+

 

音声から波形が作れるライブラリなど

http://www.ejeliot.com/pages/downloads-scripts

 

 

 

自然言語処理ツール

 

音声処理関連 - 技術情報Wiki

 

 

音声認識エンジン Amivoiceとクラウド電話&SMS API Twilioのコラボ - Twilio API 勉強会 Vol.14 - Twilio for KDDI Web Communications

 



 

PHPでAITalkさんの音声合成APIを利用してみた


音声合成ソフトで自然な読み上げを実現【株式会社エーアイ(AI)】

 

PHPでエーアイさんの音声合成APIを利用してみた.

以下手順.

 

1.DocomoさんのサイトでDeveloper登録をする

何故かDocomoさんで登録すると,エーアイさんの音声合成APIがすぐに利用できる.

API/ツールの概要 | docomo Developer support | NTTドコモ

 

2.RESTのAPIの使い方を把握する

リクエストを送る際のヘッダーやボディの仕様が予め決定されているので,確認する.

今回使う機能は「SSML」詳しくは以下のサイトを参照.

https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_docs_id=71#tag01

f:id:inobo52:20141008224515p:plain

 

3.実装した

途中で詰まった部分があったけど,OKWaveで質問したら素晴らしい方が回答してくれたおかげで,なんとか実装できました.ありがとうございました.

[PHP] AITalkの音声合成APIで困った#8782761 【OKWave】