「GPU・Linuxがなくても、Google Colaboratoryで『Yukarinライブラリ』を使いたい」

# 概要
「Google Colaboratory」で、[『Yukarinライブラリ』become-yukarin, yukarin コマンド解説](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a)を実行する方法を紹介します。
音声の収録以外であれば、ほぼ全て Google Colaboratoryで実行できます。

一般に、機械学習には GPU付きのLinux マシンを用意する必要があり、環境設定だけでも一苦労します。しかし、Google Colaboratoryを利用すれば、ブラウザだけで『Yukarinライブラリ』を使用できます。
このアイデアは @BURI55 様がくださいました。

本記事は[『GPUがなくても、Google Colaboratory で Yukarinライブラリを使いたい』](https://qiita.com/atticatticattic/items/e9eb4a24d63dc7ec1e58)をリファインした記事になります。

<font color="red">**Googleドライブの課金が必要になる場合があります**</font>
Googleドライブの無料容量は15Gのみなので、音声データを増やしていくと容量が足りなくなります。その際、有料になりますがGoogleドライブの容量を増やして対応してください。(GPUマシンの電気代がかからないと考えると、安いと思います)

**Linux環境はなくていいの？**
本格的に学習をやりたい場合は、Linux環境をオススメします。
Google Colaboratoryは簡単に利用できますが、"処理速度が遅め"・"利用時間の上限がある"などの面で本格利用には向きません。

**不明点・ご質問**
[Yukarinライブラリ Discord サーバ 招待リンク](https://discord.gg/eR3sU2v)で、ご質問いただくのが、一番早くお返事できると思います。
もちろん、本記事にコメントいただければお返事いたします。

## Google Colaboratory とは？
ブラウザで Python を利用できるサービスです。GPUも利用できるため機械学習の入門には最適です。イメージ的には、Google のスプレットシートのような、ブラウザで動くアプリケーションのようなものです。

Google アカウントでログインしてから[「Colaboratory へようこそ」](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja#recent=true)の動画をみてもらうのが一番わかりやすいと思います。
英語で話していますが、設定で日本語字幕を出せるので、心配いりません！

**連続実行は 12時間まで**で、長時間の学習はできませんが、『ちょっと試してみる』程度であれば十分な学習ができます。

### Colaboratory Notebook 
Google Colaboratory で動作確認を行った ノートブックは[yukarin_library.ipynb](https://colab.research.google.com/drive/1diPpJp0Oj5GEegsXvUQQu7x0slIioT0O) です。
**ノートブックはリンクを開いて、『マイドライブに追加』ボタンで自分のGoogle Driveにコピーしてください**

### 参考記事

- [【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory](https://qiita.com/tomo_makes/items/b3c60b10f7b25a0a5935)
- [Colaboratoryを使う際のGoogle Driveマウント方法など取り扱いかた色々](https://qiita.com/morimori_japan/items/6c67a2851aa1cee19936)
- [Jupyterの magic command](https://damontallen.github.io/IPython-quick-ref-sheets/)
- [Google Compute Engine(GEC) 上に Google Colaboratory の ローカルランタイムを作成する](https://qiita.com/ikeyasu/items/2350046d81848472f2d0)

## 1. 事前処理(Z. become-yukarin, yukarin共通の事前作業)
[『Yukarinライブラリ』become-yukarin, yukarin コマンド解説](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a)にある、Z.1〜Z.4は Google Colaboratoryを利用した場合でも必要な処理となります

[Z.1, Z.2, Z.3](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z1-%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E4%BD%9C%E6%88%90) は、ローカルPCで実行してください。
[Z.4](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z4-%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E9%85%8D%E7%BD%AE%E3%81%A8%E3%83%AA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0)はノートブックで実行します。


- [Z.1](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z1-%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E4%BD%9C%E6%88%90)
ディレクトリ作成コマンドは、Windowsの"Power Shell"で実行可能です。
```deep_yukarin```ディレクトリは、Googleドライブアプリをインストールして、同期ディレクトリ"Google ドライブ"に配置してください。
ブラウザ経由でアップロードしても問題ありませんが、ディレクトリ同期する方が楽だと思います。

- [Z.2](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z2-%E5%90%84%E7%A8%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E5%8F%96)
Windowsでgitコマンドを使う場合は、別途インストールが必要です。面倒な場合は git/bitbucketのサイトからダウンロードしてください。
それ以外は、Windowsの"Power Shell"で実行可能です。

- [Z.3](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z3-%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%8E%E9%8C%B2)
記事の通り、音声収録してください。

- [Z.4](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a#z4-%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E9%85%8D%E7%BD%AE%E3%81%A8%E3%83%AA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0)
 Z.4に対応するコマンドはノートブックに記載してあるので、そちらで実行してください。

## 2. Google Colaboratory で『Yukarinライブラリ』を実行(元記事の A, B)
Google Colaboraory でノートブック [yukarin_library.ipynb](https://colab.research.google.com/drive/1diPpJp0Oj5GEegsXvUQQu7x0slIioT0O) 公開しているので、それを参照・実行してください。
基本的に上から実行すればいいように書いてあります。

各コマンドで何をしているかは [『Yukarinライブラリ』become-yukarin, yukarin コマンド解説](https://qiita.com/atticatticattic/items/37441f3be6916cd1e73a)の記事を参照してください。

だいたい雰囲気でわかるかと思いますが、あまり詳しく書いてないのでわかりにくいところなど指摘いただければ追記します。
 

## 3. Google Colaboratory の補足 
### 3.1 Google Colaboratoryの予備知識

- Google Colaboraory は Pythonの対話モードが、ブラウザで動いているようなもの
- ディレクトリ移動は ```cp [dir]``` の代わりに ```%cp [dir]``` を使う
- コマンド実行するときは先頭に "!" をつける(例 : ```!echo "コマンドテスト" ```, ```!ls -l```など)
- ブラウザを閉じる or 12時間使い切る と、全てやり直し(これをランタイムのリセットと言う)
- 学習中はブラウザを閉じないように！ (90分以内に開き直さないとランタイムリセットされて学習は中断します)
- 挙動がおかしい場合は、メニューの『ランタイム』-> 『全てのランタイムのリセット』で最初からやり直す
- ランタイムがリセットされても、生成したファイルはGoogle Driveに残る

### 3.2 学習を止めると、以後Pythonが実行できなくなる
学習処理(A.3, A.5, B.4)を手動で終了する必要がありますが、それ以降Pythonを実行すると下記のエラーが発生して動かなくなってしまいます。

```
ERROR:root:Internal Python error in the inspect module.
Below is the traceback from this internal error.

...
```

理由はいまいちよくわかりませんが、学習処理を止めたあとは、

- ランタイムリセット
- Y.1 〜 Y.3を再実行

を行なってから、続きの処理を行ってください。


### 3.2 補足 Google Drive のマウント
ノートブックにも書いてありますが、Google Drive をマウントする際には下記のコマンドを実行します。

```
from google.colab import drive
drive.mount("/content/drive/")
```

すると、下記画像のような結果が表示され、認証コードの入力が必要になります。
![スクリーンショット 2019-06-13 11.24.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12429/b6ab7d45-5dcc-4786-5de7-4cb6f0560209.png)

下記の手順で認証コードを入力
1. 上記の実行結果に書いてある URLをクリック
2. 『Google Drive File Stream が Google アカウントへのアクセスをリクエストしています』を許可する
3. 認証コードが表示されるの、上記画像の入力欄にを貼り付ける

うまくいけば、ノートブックの左のパネルに、Google ドライブの Myドライブが表示されます。

<img width="353" alt="スクリーンショット 2019-10-12 13.12.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12429/5fabdbc9-8665-7efd-552a-60339c99c4c9.png">

以上です。
ご質問等あればDiscordサーバやコメントでお問い合わせください。
それでは、皆さんでゆかりんになりましょう！