クラウドサービス データサイエンス 入門 機械学習

【Python】GCPのSpeech-to-TextでMP3の音声を10分で文字起こし

GCP(Google Cloud Platform)とは天下のGoogleが、インフラをはじめとする様々なサービスを提供しています。

今回それらのサービスの中の「Speech-to-Text」というAI文字起こしのサービスを10分で使って見ようと思います!!

では早速ですがいきましょう〜

Speech-to-Textを使う前の注意点

注意事項を今から言いますね。

まず、プログラミング言語はPythonを使っています。バージョンは3.7です。

そして、音声はMP3形式を採用しています。

また、GCS(Google Cloud Storage)に置いたMP3に対して文字起こしをしていますので、 GCSとSpeech-to-TextのAPIの認証を許可しておいてくださいね!!

APIの許可やサービスアカウント認証などについてはこの記事をみてください→ 【Python】Google Cloud Speech-to-Text APIの2種類のライブラリを使い比べてみた

Speech-to-Textの必要なものをインストール

フリーの音声ファイルMP3をダウンロード

まず音声ファイルの取得!笑

下のリンクから著作権フリーの素材がダウンロードできます!!

ボイス・ナレーションの著作権フリー音源・音楽素材 [mp3 ...audiostock.jp › voice

モジュールのインストール

ターミナルやシェルで下のコマンドをコピーして実行してください!

Speech-to-Textでの文字起こしに必要なモジュールはインストールされるはずです。

$ cat << EOF > requirements.txt
google-cloud-speech #Speech-to-Text Client Librariesのパッケージ
google-cloud-storage #Google Cloud Storageから音声データ取得用
protobuf        #google.protobufインポート用
python-magic-bin==0.4.14   #音声ファイルmime判定用
pydub           #WAVファイル情報取得用
mutagen         #FLACファイル情報取得用
EOF
$ pip install -r requirements.txt

google-cloud-speechはアップデートが必要みたいです。やりましょう!

$ pip install --upgrade google-cloud-speech

最後に先ほどの章で作成しているサービスアカウントキーのjsonを読み込んで、Speech-to-Textを使っていいように認証してあげます。

$ export GOOGLE_APPLICATION_CREDENTIALS=<サービスアカウントキー(json)>

準備万端です!次で実際のコードを描いていきましょう!

Speech-to-Textのコード内容

では早速コードの中身ですが、GCPのSpeech-to-Textの公式ドキュメントをほぼコピーしただけです。

音声をGCS(Google Cloud Storage)に入れましたか??

下のコードでは、音声ファイルをtest.mp3としているので自分の音声ファイルの名前に変更してくださいね!

# -*- coding: utf-8 -*-
from google.cloud import speech_v1p1beta1 as speech

def sample_recognize(storage_uri):
   client = speech.SpeechClient() # こういうAPIはだいたいクライアントというものをまず作成します!

    language_code = "ja-JP" # 日本語の文字起こしならこれで大丈夫!
    sample_rate_hertz = 44100 # 音声の周波数です。気にしなくていいです。

    encoding = speech.RecognitionConfig.AudioEncoding.MP3 # 今はMP3を対象にしてます!
    config = {
        "language_code": language_code,
        "sample_rate_hertz": sample_rate_hertz,
        "encoding": encoding,
    }
    audio = {"uri": storage_uri}

    response = client.recognize(config=config, audio=audio) # ここで文字起こしの結果を取得しますよ!!

    for result in response.results:
        # First alternative is the most probable result
        alternative = result.alternatives[0]
        print(u"Transcript: {}".format(alternative.transcript))

    return response


def main():
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--storage_uri",
        type=str,
        default="gs://speechtotext_test/test.mp3", # GCS(Google Cloud StorageのURIを描いてください!
                               # バケット名にspeechtotext_test, 音声ファイル名 test.mp3で設定してます
    )
    args = parser.parse_args()

    sample_recognize(args.storage_uri)


if __name__ == "__main__":
    main()

Speech-to-Textを実行

では、早速動かしてみましょう!

python sample.py

出力結果の一例を下に載せておきますね!!

インタビューのテスト音声なのですが、文字起こしの精度はまあまあなのではないでしょうか!

$ python sample.py 
Transcript: 質問させていただきますあの読んだんですけれどもわからない理解には遠く及ばずという感じであの言葉の意味からお聞きしたいと思ったら言語情報っていう言葉とあとフォルマント阿戸町運動っていうことについてまず初めに聞かせてください積もったら分かりますよね言葉ですよね言語情報ってのはねまあ簡単に言えば単語の意味辞書に書いてありますよねそれからその単語がくっついた時にくっついたから文を作ったりする時に女子が名刺に女子がくっついて同士があって最後に助動詞があってそういう普通に言語学の教科書に書いてあるよそれがまあ県五條言葉はね語源的にはねそのなんとかの横にとかね隣にとかねそういう
Transcript: 意味なんですよつまり言語からちょっとずれたとこにある情報だけどたけどその実際には存在している情報っていうことですね

どうでしたか? MP3やFLAGなど音声の文字起こしがSpeech-to-Textで簡単にできてしまいます。

まとめ

いかがでしたでしょうか?

文字起こしが簡単にGCPのSpeech-to-Textでできてしまいました!

会議の議事録などももしかしたら自動でできてしまいますよ!

他にも楽しいAPIがたくさんあるのでGCPをぜひ使ってみてくださいね!


-クラウドサービス, データサイエンス, 入門, 機械学習
-, ,

© 2020 はやぶさエンジニア Powered by AFFINGER5