Twitterスペースの録音をCloud Speech-to-Textを使って文字起こしするまで

ちょっと頑張ったので、自分&周囲が使えるノウハウ共有メモ。Twitterスペースの録音は公開データで機密情報ではないため、ゆるく全部オンラインのサービスを使っていく。


  • Twitterスペースの録音をダウンロードする
  • 録音ファイルをGoogleのCloud Speech-to-Textに放り込めるように加工する
  • GoogleのCloud Speech-to-Textを使って変換する

Twitterスペースの録音をダウンロードする

録音スペース - Twitterスペース - プロダクト | Twitter Create

現在、端末にスペースの録音を音声ファイルとして直接ダウンロードすることはできません。ただし、ホストは録音を削除していない限り、スペースの録音のコピーをTwitterのデータアーカイブから.tsファイルでいつでも取得できます。このファイルは.mp3や.wavなどの音声ファイルだけでなく、動画ファイルにも簡単に変換できます。

とのことなので、毎回データアーカイブのダウンロードリクエストをして、該当の.tsファイルを探す。ファイル名だけだと何時のものか分かりづらいので、データアーカイブの該当スペースを参照する。

ここのt.co〜のリンクを開くと、ファイル名が参照できる。

録音ファイルを加工する

.ts ファイルを .wav形式にする

GoogleのCloud Speech-to-Textは.ts形式ではNGなので、WAV形式にする

Convertio — ファイルコンバーター


WAV形式にしつつ、チャンネル数は1、周波数は44100、時間も録音開始からに切り取る。

ここでファイル名を変更する

次のステップでファイル分割をすると、元のファイル名に連番のサフィックス付く命名規則になるので、ここでファイル名を変更しておく。

space_yyyymmdd.wav など。

録音のWAVファイルを分割する

Cloud Speech-to-Textの60秒制約と、python実行環境とするGoogle Colabのメモリ制限に引っかからないように、録音WAVファイルを55秒ごとに分割する。

オーディオファイルオンラインアプリの分割-無料のオンラインWAVファイルスプリッター

分割後のwavファイルたち


これで録音した音声ファイルの加工は終了。

GoogleのCloud Speech-to-Textを使って音声ファイルをテキストに変換する

Google DriveGoogle ColabからCloud Speech-to-Textを使って変換する手順は下記のサイトを参照。

laid-back-scientist.com

【音声認識】GCPのCloud Speech-to-Text APIを利用して音声認識入門してみた - Qiita


最後、変換を実施するところだけ分割したWAVファイルを1個1個やってたらだるいので、ループ処理を追加する

import io

from google.cloud import speech

for i in range(1, 31, 1):
    voice_file_path = 'yyyymmdd/space_'+str(i)+'.wav'

    with io.open(voice_file_path, 'rb') as f:
        content = f.read()

    audio = speech.RecognitionAudio(content=content)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=44100,
        language_code='ja-JP')
    client = speech.SpeechClient()
    
    response = client.recognize(config=config, audio=audio)
    for result in response.results:
        print(result.alternatives[0].transcript)

Speech to Text完了! 機械が聞き取れるくらいの喋り方を心掛けましょう(おまいう)