Google Apps Scriptを使うと、日常的な作業を自動化することができます。
またパソコンを起動していなくても、自動起動することができるのでとても便利です。
今回からはGASのサンプルをいろいろ実行してみてその可能性を探っていきたいと思います。
ログ出力
まずは最も基本的な処理としてログの出力を行ってみます。
[Google Apps Script]
1 | function test() { |

ログの出力は、処理内容の確認やデバッグでよく使用しますのでとても大切な処理になります。
Google Apps Scriptを使うと、日常的な作業を自動化することができます。
またパソコンを起動していなくても、自動起動することができるのでとても便利です。
今回からはGASのサンプルをいろいろ実行してみてその可能性を探っていきたいと思います。
まずは最も基本的な処理としてログの出力を行ってみます。
[Google Apps Script]
1 | function test() { |

ログの出力は、処理内容の確認やデバッグでよく使用しますのでとても大切な処理になります。
今回は日本語音声データセットJSUTの読み上げ音声を、音声合成フレームワークのNVIDIA/tacotron2の読み上げ音声に変換します。
読み上げ音声の変換を行うためには以下のライブラリをインストールします。
[WSLコンソール]
1 | pip install librosa==0.8.0 |
JSUTの読み上げ音声を、NVIDIA/tacotron2の読み上げ音声に変換するソースコードは次のようになります。
[ソースコード]
1 | import os |
上記のソースコードを実行すると次のようなログが表示されます。
[実行結果]
1 | ・・・(途中略)・・・ |
wavフォルダが作成されその中にNVIDIA/tacotron2用の読み上げ音声が出力されます。
フォルダ容量は1.53GBほどになりました。
次回は、音声合成の学習を行い・・・・たかったのですが、どうしてもうまくいかなかったのでまた別内容の記事を書き始めようと思います。<(_ _)>
日本語音声データセットJSUTを転移学習し、音声合成フレームワークのNVIDIA/tacotron2で日本語の音声合成を行います。
今回はNVIDIA/tacotron2用の台本を作成します。
下記サイトのJSUTの「台本」と「読み上げ音声データ」のデータセットを利用します。
JSUT - https://sites.google.com/site/shinnosuketakamichi/publication/jsut
WSLコンソールで下記のコマンドを実行し、ダウンロードと解凍を行います。
[WSLコンソール]
1 | wget http://ss-takashi.sakura.ne.jp/corpus/jsut_ver1.1.zip |
ダウンロードしたJSUT用の台本をNVIDIA/tacotron2用の台本に変換するソースコードは以下の通りです。
[ソースコード]
1 | import os |
上記の処理を実行すると、filelists/transcript_utf8.txtというファイルが作成されます。
このファイルがNVIDIA/tacotron2用の台本となります。
次回は、読み上げ音声の作成を行います。
音素表記とは、音素が表記の単位になっている文字体系のことです。
今回は、pyopenjtalkというツールで音素表記の単位に変換してみます。
pyopenjtalkはLinuxとMacOSに対応していますが、Windowsでは動作しません。
ですがWSLでは動作するようですので、WSLコンソールを使ってインストールしてみます。
[WSLコンソール]
1 | sudo apt-get install cmake |
[実行結果]
1 | ・・・(途中略)・・・ |
最後に上記のようなログが表示されていれば、インストール完了です。
音素表記に変換するソースコードは下記のようになります。
[ソースコード]
1 | import pyopenjtalk |
上記のPythonコードを実行します。
[実行結果]
1 | Downloading: "https://github.com/r9y9/open_jtalk/releases/download/v1.11.1/open_jtalk_dic_utf_8-1.11.tar.gz" |
「k o N n i ch i w a」という音素表記に変換することができました。
Big SleepとDeep Dazeを使って、テキストから画像を生成する処理を試してみました。
ただGoogle Colaboratoryの制限のために、処理の途中でセッションが切られてしまい最後まで画像を生成することができませんでした。
Google Colaboratoryの有料版を使ってテストしたいところですが、とりあえずローカル実行でどこまでできるかを確認してみます。
実行するノートパソコンのスペックは下記の通りです。
Big SleepはGPUなしでは実行できなかったので、Deep Dazeの方でローカル実行してみます。
次のコマンドを実行し、Deep Dazeをインストールします。
[コンソール]
1 | pip install deep-daze |
[実行結果]
1 | Collecting deep-daze |
インストールは問題なく終了しました。
テキストから画像を生成します。
指定するテキストは“shattered plates on the grass”(草の上に粉々になったプレート)としました。
[コンソール]
1 | imagine "shattered plates on the grass" |
15:00スタート
とりあえず18時間後に生成されている画像は下記の通りです。
(まだ処理が終了していません・・・😥😥😥)

それっぽい画像になっていると思います。
GPUなしだとかなり時間はかかってしまいますが、Google Colaboratoryのように途中でセッションを切られてしまうことはないので安心です。
ちなみに、途中で動画編集ソフトを立ち上げたらメモリ不足エラーになって進捗94%のところで終了してしまいました😥😥😥
[メモリー不足のログ]
1 | image updated at "./shattered_plates_on_the_grass.000001.jpg" |
Buy new RAM!(新しいRAM買え)って・・・・そんなログ始めて見ました😭😭😭
Deep Daze も、Big Sleepと同じようにテキストから画像を生成するモデルです。
画像生成の深層学習モデルとして CLIP + Deep SIRENを使用しています。
Deep Dazeで生成した画像サンプルは下記のサイトで確認できます。
Deep Daze - https://github.com/lucidrains/deep-daze
Deep Dazeは、PyTorch 1.7.1であれば高速な画像生成が可能です。
PyTorch 1.7.1をインストールするためには、CUDAの情報が必要です。
以下のコマンドでCUDAのバージョンを表示します。
[Google Colaboratory]
1 | # CUDAのバージョンの確認 |
[実行結果]
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Oct_12_20:09:46_PDT_2020
Cuda compilation tools, release 11.1, V11.1.105
Build cuda_11.1.TC455_06.29190527_0>
CUDA11であることが分かりました。
以下のサイトから、「v1.7.1」⇒「Wheel」⇒「Linux and Windows」⇒「CUDA 11.0」のコマンドを確認し、実行します。
Previou PyTorch Versions | PyTorch - https://pytorch.org/get-started/previous-versions/
[Google Colaboratory]
1 | # PyTorch1.7.1のインストール |
[実行結果]
・・・(途中略)・・・
Successfully installed torch-1.7.1+cu110 torchaudio-0.7.2 torchvision-0.8.2+cu110
最後に上記のようなログが表示されていればインストールは完了です。
次のコマンドを実行し、Deep Dazeをインストールします。
[Google Colaboratory]
1 | # DeepDazeのインストール |
[実行結果]
・・・(途中略)・・・
Successfully installed deep-daze-0.10.3 einops-0.3.2 fire-0.4.0 ftfy-6.0.3 imageio-2.9.0 pytorch-ranger-0.1.1 siren-pytorch-0.1.5 torch-optimizer-0.1.0
最後に上記のようなログが表示されていればインストールは完了です。
テキストから画像を生成してみます。
今回はサンプル画像にある”life during the plague”(疫病の間の生活)を少し変更して“life during the war”(戦争の間の生活)というテキストを指定してみました。
[Google Colaboratory]
1 | # テキストからの画像生成 |
Google Colaboratoryの制限のため、途中でセッションが切られてしまい最後まで実行できませんでしたが、次のような画像が生成されていました。

砂ぼこりか爆発のようなものがあるような気がしますが、もうちょっと認識しやすいものが生成されてほしいところです。
(有料プランにしないと最後まで実行させるのは難しいのかもしれません。)
Big Sleepとは、テキストから画像を生成するモデルです。
画像生成の深層学習モデルとして CLIP + BigGAN を使用しています。
Big Sleepで生成した画像サンプルは下記のサイトで確認できます。
Big Sleep - https://github.com/lucidrains/big-sleep
Big Sleepをインストールするためには下記のコマンドを実行します。
[Google Colaboratory]
1 | # BigSleepのインストール |
テキストから画像を生成してみます。
簡潔なテキストの方が画像生成しやすいと思いまして、“little cat”というテキストを指定しました。
[Google Colaboratory]
1 | # テキストからの画像生成 |
次のような画像が生成されました。

猫の一部のようなものと、中心付近には猫の足跡(?)が描かれた画像が生成されました。
言葉の選択がよくなかったのでしょうか・・・・。
ただテキストから画像を作成するというのはいろいろな可能性を感じるので、ほかのテキストでも画像生成を試してみたいと思います
CLIPは、OpenAIが開発した画像とテキストの関連性をランク付けするニューラルネットワークです。
CLIPでは、自由にラベルを指定して画像分類を行うことができます。
CLIPは、Huggingface Transformersをインストールすることで使用できるようになります。
[Google Colaboratory]
1 | !pip install transformers==4.6.0 |
Huggingface Transformersでは、以下のビジョンタスクのモデルアーキテクチャを使用できます。
分類する画像として下記のものを使います。

この画像をGoogle Colaboratoryアップロードしておきます。
CLIPのモデルとプロセッサを準備し、判定用の画像を読み込みます。
[Google Colaboratory]
1 | import torch |
ラベルを定義し、どのラベルのスコアが高いのか判定します。
ラベルは以下の3つを定義してみました。
[Google Colaboratory]
1 | # ラベルの準備 |
[実行結果]
class: cat
score: tensor([[0.9811, 0.0098, 0.0091]], grad_fn=)
catのスコアが1番高くなっており、きちんと画像判定できています。
色のラベルを準備し、再度スコアを出してみます。
[Google Colaboratory]
1 | # 色のラベルの準備 |
[実行結果]
class: red
score: tensor([[0.0249, 0.1160, 0.5005, 0.3586]], grad_fn=)
redのスコアが一番高いのですが、私の眼には茶色の猫に見えます。
もしかして背景色の赤がredのスコアを高めてしまったのでしょうか。
最後に雰囲気のラベルでスコア付けをします。
[Google Colaboratory]
1 | # 雰囲気のラベルの準備 |
[実行結果]
class: docile
score: tensor([[0.0451, 0.7161, 0.0311, 0.0363, 0.1571, 0.0144]],
grad_fn=)
docile(従順)のスコアが一番高くなっているのですが、正直この写真の猫の雰囲気を判断するのは困難かと思います(;^_^A
Vision Transformer(Google AI)やDeiT(Facebook)のように、なんの画像かを判定するのとは違い、用意したラベルそれぞれのスコア(合致率)を導き出すのもなかなか興味深いですね。
今回は、Facebook社が提供しているDeiTを使って画像分類を行います。
DeiTは、Huggingface Transformersをインストールすることで使用できるようになります。
[Google Colaboratory]
1 | !pip install transformers==4.6.0 |
Huggingface Transformersでは、以下のビジョンタスクのモデルアーキテクチャを使用できます。
分類する画像として下記のものを使います。

この画像をGoogle Colaboratoryアップロードしておきます。
画像分類するためのソースコードは以下のようになります。
2~6行目が前回記事と異なっており、それ以外の箇所はすべて同じです。
[Google Colaboratory]
1 | import torch |
実行結果は以下の通りです。
[実行結果]
1 | class: tabby, tabby cat |
判定結果はtabby cat(ぶち猫)となり、前回のVision Transformer(Google AI)のモデルを使った時と同じ結果となりました。
次回は、CLIPを使った画像分類を行います。
今回は、Google社が提供しているVision Transformerを使って画像分類を行います。
Vision Transformerは、Huggingface Transformersをインストールすることで使用できるようになります。
[Google Colaboratory]
1 | !pip install transformers==4.6.0 |
Huggingface Transformersでは、以下のビジョンタスクのモデルアーキテクチャを使用できます。
分類する画像として下記のものを使います。

この画像をGoogle Colaboratoryアップロードしておきます。
画像分類するためのソースコードは以下のようになります。
11行目でアップロードした画像を読み込んでいます。
[Google Colaboratory]
1 | import torch |
実行結果は以下の通りです。
[実行結果]
1 | class: tabby, tabby cat |
tabby catは日本語でぶち猫という意味です。
猫の種類はよくわかりませんが、猫には違いないのでちゃんと画像分類できたということになると思います。
次回は、Facebook社が提供しているDeiTを使って画像分類を行います。