音声認識

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

ぐぅ

ぐぅ

京大工学部▶︎京大大学院情報学研究科▶︎日系企業のITエンジニア。研究室ではAI×通信の研究も行いAIにも知見あり。友人とプログラミング初学者向けブログ「はやぶさエンジニア」を運営。ノーコードで起業し、サブスク型サービスを運営。26歳大阪在住

★この記事は10分で読み終えることができます。

GCPのSpeech-to-textを利用して音声を文字起こしする方法を解説した記事です。

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の認証を許可しておいてくださいね!!

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)に入れましたか??

私はgs://speechtotext_test/test.mp3の方にspeechtotext_testというバケットを作成し、test.mp3を保存しています。

下のコードでは、音声ファイルを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()

GCPの基礎を身に付けたい人におすすめのUdemy講座があります。セール中だと1500円で購入でき、無料で初めの数セクションを受けることができるので自分にあった講座が確認することができますよ。

【最速で学ぶ - Google Cloud Platform(GCP)入門完全攻略コース】

UdemyのGCP講座で最も人気のある講座です。アカウント作成からSQL、サーバ、ネットワークなど基本的で重要なGCPのサービスの使い方を知ることができます。GCP初心者に大変おすすめです。

受講はこちら

【みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2020年最新版】】

Google colab上で、PythonによりAIを実装する講座です。文字認識や株価分析などをPythonの有名なライブラリを使ってプログラミングしていきます。

受講はこちら

Speech-to-Textを実行

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

python sample.py

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

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

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

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

まとめ

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

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

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

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

【5選】プログラミングスクールを現役エンジニアが本気で厳選してみた

こんにちは、フルスタックエンジニアのぐぅと申します^ ^ プログラミングは一番再現性が高く、誰もが身につけられるスキルです。「コードが正しければ動く」と言う不変の真理があるだけなので、プログラミング方 ...

続きを見る

  • この記事を書いた人
ぐぅ

ぐぅ

京大工学部▶︎京大大学院情報学研究科▶︎日系企業のITエンジニア。研究室ではAI×通信の研究も行いAIにも知見あり。友人とプログラミング初学者向けブログ「はやぶさエンジニア」を運営。ノーコードで起業し、サブスク型サービスを運営。26歳大阪在住

-音声認識
-, , ,

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