Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでPydubとGoogle音声認識APIを使用した音声処理


このチュートリアルでは、オーディオファイルを操作します。オーディオをチャンクに分割して、その中のコンテンツを認識します。オーディオファイルの内容もテキストファイルに保存します。以下のコマンドを使用して、以下のモジュールをインストールします。

 pip install pydub 

上記のコマンドを実行すると、次の成功メッセージが表示されます

pydubの収集https://files.pythonhosted.org/packages/79/db/eaf620b73a1eec3c8c6f8f5b0b236a50f9da88ad57802154b7ba7664d0b8/pydub-0.23.1-py2.py3-none-any.whl pre> 
 pip install audioread 

上記のコマンドを実行すると、次の成功メッセージが表示されます。

 audioreadの収集ダウンロードhttps://files.pythonhosted.org/packages/2e/0b/940ea7861e0e9049f09dcfd72a90c9ae55f697c17c299a323f0148f913d2/audioread-2.1.8.tar.gz収集されたパッケージのBuildingwheels:audioreadBuilding Wheel for audioread(setup.py) audioread(setup.py):finished with status'done'作成されたaudioreadのホイール:filename =audioread-2.1.8-cp37-none-any.whl size =23098 sha256 =92b6f46d6b4726e7a13233dc9d84744ba74e23187123e67f663650f24390dc9dディレクトリに保存:C:\ Users \ hafe \ Local \ pip \ Cache \ Wheels \ b9 \ 64 \ 09 \ 0b6417df9d8ba8bc61a7d2553c5cebd714ec169644c88fc012正常にビルドされたaudioread収集されたパッケージのインストール:audioread正常にインストールされたaudioread-2.1.8 
 pip install SpeechRecognition 

上記のコマンドを実行すると、次の成功メッセージが表示されます。

SpeechRecognitionの収集ダウンロードhttps://files.pythonhosted.org/packages/26/e1/7f5678cd94ec1234269d23756dbdaa4c8cfaed973412f88ae8adf7893a50/SpeechRecognition-3.8.1-py2.py3-none-any.whl(32.8MB) 3.8.1 

プロセスには2つのステップがあります。

  • オーディオをチャンクに分割します。

  • SpeechRecognitionを使用してコンテンツを抽出する必要があります 。

ライブラリから1つのオーディオファイルを取得します。コードを始めましょう。

#モジュールのインポートimport pydubimport Speech_recognition#オーディオファイルの取得audio =pydub.AudioSegment.from_wav('audio.wav')#オーディオの長さ(ミリ秒)audio_length =len(audio)print(f'オーディオの長さ:{audio_length}' )#chunk counterchunk_counter =1audio_text =open('audio_text.txt'、'w +')#オーディオポイントをスライスする場所の設定=60000#オーバーラップ-スライス後の残りのオーディオrem =8000#チャンクを追跡するための変数の初期化とendingflag =0start =0end =0#範囲内でremfor iをインクリメントしてオーディオを反復する(0、2 * audio_length、point):#最初の反復でend =rem if i ==0:start =0 end =point else:#他の反復start =end --rem end =start + point#endがaudio_lengthより大きい場合end> =audio_length:end =audio_length#停止フラグを示す=1#オーディオからチャンクを取得するchunk =audio [start:end]#チャンク名chunk_name =f'chunk_ {chunk_counter}'#cを保存するローカルストレージへのハンクchunk.export(chunk_name、format ='wav')#チャンクの出力print(f'{chunk_name} start:{start} end:{end}')#チャンクカウンターのインクリメントchunk_counter + =1#テキストの認識オーディオから#レコグナイザーレコグナイザーを初期化=Speech_recognition.Recognizer()#speech_recognition.AudioFile(chunk_name)をchunk_audioとして使用してリスニングされたオーディオを作成:chunk_listened =Recognitionr.listen(chunk_audio)#オーディオからコンテンツを認識試行:#からコンテンツを取得チャンクコンテンツ=recognizer.recognize_google(chunk_listened)#ファイルへの書き込みaudio_text.write(content +'\ n')#speech_recognition.UnknownValueError以外で認識されない場合:print('オーディオは認識されません')#speech_recognition.RequestError以外のインターネットエラーエラーとして:print('インターネットに接続できません')#フラグの場合はフラグをチェック==1:audio_text.close()break 

出力

上記のコードを実行すると、次の結果が得られます。

オーディオの長さ:480052chunk_1開始:0終了:60000chunk_2開始:52000終了:112000chunk_3開始:104000終了:164000chunk_4開始:156000終了:216000chunk_5開始:208000終了:268000chunk_6開始:260000終了:320000chunk_7開始:312000終了:372000chunk_8開始:364000終了:424000chunk_9開始:416000終了:476000chunk_10開始:468000終了:480052 

ファイルの内容を確認しています。

#ファイルとしてopen('audio_text.txt'、'r')を使用して読み取りモードでファイルを開く:print(file.read())

上記のコードを実行すると、次の結果が得られます。

英語と私はここサンフランシスコにいます私は先週サンフランシスコに戻ってきました私たちは教育国でテキサスにいましたそして教育会議の読者は飛行機でした結果あなたは英語を持っていた悪い家のバックアップファイルの結果として教育を改善しましたすぐに来るのは1日だけです12o1a.m.今彼女の英語についてのすべて、またはあなたの街の私のメールリストポートの電源を入れていますあなたのメールメールをチェックしてください 

結論

チュートリアルについて疑問がある場合は、コメントセクションにその旨を記載してください。


  1. PythonのニュースAPIを使用してトップニュースを取得する

    News APIは、任意のWebサイトからニュース記事を検索および取得するための非常に有名なAPIです。このAPIを使用すると、誰でも任意のWebサイトからニュースの上位10行を取得できます。 ただし、このAPIを使用するには、APIキーが1つ必要です。 サンプルコード import requests def Topnews(): # BBC news api my_api_key=Api_number” my_url = = https://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=my

  2. MacでのPython3のアップグレードと使用

    あなたはあなたの真新しいMacがすべての関連するソフトウェアの最新バージョンを持っていると思うかもしれません。ほとんどのユーザーアプリにとっては正しいでしょうが、基盤となるフレームワークにとっては別の話です。最新の安定版リリースはPython3.5ですが、新しいMacにはPython2.7.10が付属しています。これがバージョン間の大きなギャップのように思われる場合、それはそうだからです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python3はPython 2と下位互換性がなく、ほとんどの開発者は引き続きPython2を使用しています。 2to3か2to3ではないか?