音響Python

【Pythonサンプルコード】録音後の音声データを文字起こしする方法

インタビューや取材で録音した音声データを文字起こしする。

会議の内容を文字起こしするというのは昨今では当たり前になってきました。

AIを使ってやるのも常識的です。

ここではPythonを使って文字起こしの技術を自作してみましょう。

類似の記事がありますので、ぜひ参考にしてください。

全体の開発ステップ

  1. 環境設定:
    • SpeechRecognitionライブラリをインストールします。これは、Pythonのpipコマンドを使って簡単に行えます。
    • 音声データが録音されている形式に応じて、pydubffmpegなどの追加ライブラリが必要になる場合があります。
  2. 音声ファイルの読み込み:
    • SpeechRecognitionを使用して、音声ファイルを読み込み、音声認識に適した形式に変換します。
  3. 音声認識:
    • 読み込んだ音声データをテキストに変換します。このプロセスでは、Google Web Speech APIなどの音声認識サービスを使用します。
  4. 結果の処理:
    • 変換されたテキストを出力または必要に応じてさらに処理します。
import speech_recognition as sr

# 音声認識オブジェクトの初期化
r = sr.Recognizer()

# 音声ファイルのパスを指定
audio_file_path = 'ファイルのパス'

# 音声ファイルを読み込み
with sr.AudioFile(audio_file_path) as source:
    audio_data = r.record(source)

# Google Web Speech APIを使用して音声データをテキストに変換(日本語に設定)
try:
    text = r.recognize_google(audio_data, language='ja-JP')
    print(f"変換されたテキスト: {text}")
except sr.UnknownValueError:
    print("Google Web Speech APIは音声を認識できませんでした。")
except sr.RequestError as e:
    print(f"Google Web Speech APIからの応答に問題がありました; {e}")

SpeechRecognitionについて

Google Web Speech API以外にも、Microsoft Bing Voice RecognitionやIBM Speech to Textなど、複数の音声認識サービスがSpeechRecognitionライブラリで利用可能です。

もし実行結果に不満がある場合サービスによっては、異なる認識アルゴリズムを使用しているため、結果が改善する可能性があります。

language=’ja-JP’の部分でその言語を指定してあげる必要があります。

今回は日本語を想定していますのでjpを使用。

ファイル形式によるエラー

エラーメッセージが出る場合、多くは音声ファイル形式がPCM WAV、AIFF/AIFF-C、またはネイティブFLAC形式でない、またはファイルが破損している可能性があります。

この問題に対処するためには、次のステップを検討してください:

  1. ファイル形式の確認: まず、音声ファイルがサポートされている形式(PCM WAV、AIFF/AIFF-C、ネイティブFLAC)のいずれかであることを確認してください。ファイル形式を確認するには、ファイルの拡張子やメディアプレイヤーの情報をチェックすることができます。
  2. ファイルの変換: もしファイルがサポートされていない形式である場合、ffmpegpydubなどのツールを使用してサポートされている形式に変換する必要があります。例えば、MP3ファイルをWAV形式に変換するコードスニペットは以下の通りです:
from pydub import AudioSegment

# MP3ファイルを読み込む
audio = AudioSegment.from_mp3("path/to/your/audio_file.mp3")

# WAV形式で保存
audio.export("output_audio_file.wav", format="wav")

これでファイル形式はクリアです。

文字起こしの整形

Pythonを使って得られた文章に句読点を付けて整形することは可能です。

Pythonでこのタスクを実現するには、独自のロジックを実装するか、自然言語処理(NLP)ライブラリを使用する方法があります。

ただし、NLPを使う場合であっても日本語の場合は事前に句読点の定義をつける必要があります。

これはとても面倒な作業ですので、筆者はNotion AIを使っています。

Notion AIに実行結果で得られたテキストをそのまま貼り付けてAIライティング機能を使います。

貼り付けたテキストの注釈部分からスペルと文法を修正するを選択すると自動で句読点をつけて修正してくれます。

文章もそのまま保存することができバックアップとしても機能するので大変便利です。

今後の課題〜話者分離機能

やはり対談などの場合は話者分離を自動で行なってくれると便利ですよね。

Pythonを使って現場でもしっかりと開発すれば可能です。

複数の人物が話している音声ファイルから人物ごとにテキストを抽出することは、音声認識と話者識別(話者分離)のタスクを組み合わせることで可能です。

ステップ 1: 話者分離

  • 話者分離は、混在した音声データから個々の話者の音声を分離する技術です。これは「話者ダイアリゼーション」とも呼ばれます。いくつかの高度なライブラリやツールがこの目的のために存在し、実際の音声ファイルに適用できます。例えば、pyAudioAnalysisSpleeterなどがあります。

ステップ 2: 音声認識

  • 音声認識は、分離された音声データをテキストに変換します。このステップでは、前述したSpeechRecognitionライブラリやGoogle Cloud Speech-to-Text APIなどが使用できます。

ステップ 3: 話者の識別とテキストの割り当て

  • 分離された音声がテキストに変換された後、それぞれのテキストを元の話者に割り当てます。これには、話者分離のステップで得られた情報(例えば、話者の時間区間など)を使用します。

実装の難易度

  • このプロセスは高度な技術を要し、完璧な結果を保証するものではありません。特に、音声の品質、話者の数、話者の声の類似度、背景ノイズなどが結果に大きく影響します。
  • 完全な自動化と高精度の結果を期待する場合は、商用の音声認識サービス(Google Cloud Speech-to-Text、IBM Watson Speech to Textなど)を利用することも検討してください。これらのサービスは、高度な話者分離と音声認識機能を提供する場合があります。

注意点

  • Pythonや他のプログラミング言語で利用可能なライブラリやAPIを用いても、このタスクを完全に自動化することは挑戦的です。特に、話者分離技術は進んでいますが、異なる話者の音声を完全に分離することは依然として難しい問題です。

このようなシステムの開発には、音声処理と自然言語処理の深い知識が必要になります。

今回は音声ファイルの文字起こしと整形までとし、今後またチャレンジしたいと思います。

こうたろう

音大を卒業後ピアニストとして活動。 日本で活動後北欧スウェーデンへ。 アーティストLindha Kallerdahlと声帯とピアノによる即興哲学を研究。 その後ドイツ・ケルンに渡りAchim Tangと共にアルバム作品制作。 帰国後、金田式DC録音の第一人者:五島昭彦氏のスタジオ「タイムマシンレコード」にアシスタントとして弟子入り。 独立後音楽レーベル「芸術工房Pinocoa(現:Kotaro Studio)」を結成。 タンゴやクラシックなどアコースティック音楽作品を多数プロデュース。 大阪ベンチャー研究会にて『芸術家皆起業論~変化する社会の中、芸術家で在り続けるために』を講演。 その後、秋山庄太郎氏後継の写真スタジオ「村上アーカイブス」でサウンドデザイナー兼音響担当として映像制作チームに参加。 村上宏治氏の元で本格的に写真、映像技術を学ぶ。 祖父母の在宅介護をきっかけにプログラムの世界に興味を持ち、株式会社 ジオセンスの代表取締役社長:小林一英氏よりプログラムを学ぶ。 現在はKotaro Studioにて『あなたのためのアートスタジオ』音と絵をテーマに芸術家として活動中。 2023年より誰かのための癒しの場所『Curanz Sounds』をプロデュース。