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形式にする
WAV形式にしつつ、チャンネル数は1、周波数は44100、時間も録音開始からに切り取る。
録音のWAVファイルを分割する
Cloud Speech-to-Textの60秒制約と、python実行環境とするGoogle Colabのメモリ制限に引っかからないように、録音WAVファイルを55秒ごとに分割する。
オーディオファイルオンラインアプリの分割-無料のオンラインWAVファイルスプリッター
これで録音した音声ファイルの加工は終了。
GoogleのCloud Speech-to-Textを使って音声ファイルをテキストに変換する
Google DriveとGoogle ColabからCloud Speech-to-Textを使って変換する手順は下記のサイトを参照。
【音声認識】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完了! 機械が聞き取れるくらいの喋り方を心掛けましょう(おまいう)