検索
ホームページバックエンド開発Python チュートリアルPythonを使用してLinux上で音声認識機能を実装する方法

音声認識の仕組みの概要

音声認識は、1950 年代初頭にベル研究所で行われた研究に由来します。初期の音声認識システムは、単一の話者とわずか 12 語程度の語彙しか認識できませんでした。最新の音声認識システムは、複数の話者を認識し、複数の言語を認識できる豊富な語彙を備えているため、長い道のりを歩んできました。
音声認識の最初の部分はもちろん音声です。マイクを介して、音声は物理的な音から電気信号に変換され、その後アナログ - デジタル コンバーターを介してデータに変換されます。デジタル化すると、音声をテキストに書き写すためにいくつかのモデルを適用できます。
最新の音声認識システムのほとんどは、隠れマルコフ モデル (HMM) に依存しています。その動作原理は、音声信号を非常に短い時間スケール (10 ミリ秒など) の定常プロセス、つまり統計的特性が時間とともに変化しないプロセスとして近似できることです。
現代の音声認識システムの多くは、HMM 認識の前にニューラル ネットワークを使用して、特徴変換と次元削減技術を通じて音声信号を単純化します。音声アクティビティ検出器 (VAD) を使用して、オーディオ信号を音声のみを含む可能性のある部分に減らすこともできます。
Python ユーザーにとって幸いなことに、一部の音声認識サービスは API を通じてオンラインで利用でき、そのほとんどは Python SDK も提供しています。

適切な Python 音声認識パッケージを選択する

PyPI には既製の音声認識パッケージがいくつかあります。
apiai
google-cloud-speech
pocketsphinx
SpeechRcognition
watson-developer-cloud
wit
一部のソフトウェア パッケージ (wit や apiai など) では、話者の意図を識別するための自然言語処理など、基本的な音声認識を超える機能が組み込まれています。 Google Cloud Speech などの他のソフトウェア パッケージは、音声からテキストへの変換に重点を置いています。
その中でも、SpeechRecognition はその使いやすさで際立っています。
音声の認識には音声入力が必要ですが、 SpeechRecognition で音声入力を取得するのは非常に簡単です。マイクにアクセスして音声ファイルを最初から処理するためのスクリプトを構築する必要はありません。必要なのは、ほんの少しだけです。自動的に取得が完了するまで数分かかり、実行されます。

SpeechRecognition のインストール

SpeechRecognition は Python2.6、2.7、および 3.3 と互換性がありますが、Python 2 で使用する場合は追加のインストール手順が必要です。 pip コマンドを使用して、端末から SpeechRecognition をインストールできます: pip3 install SpeechRecognition

インストールが完了したら、インタープリタ ウィンドウを開いてインストールを確認できます:

Pythonを使用してLinux上で音声認識機能を実装する方法

注: このセッションは閉じないでください。次のいくつかの手順で使用します。
既存のオーディオ ファイルを扱っている場合は、特定の使用例のいくつかの依存関係に注意しながら、SpeechRecognition を直接呼び出してください。また、マイク入力を取得するには、PyAudio パッケージをインストールすることにも注意してください。

Recognizer クラス

SpeechRecognition の中核は、Recognizer クラスです。
Recognizer API の主な目的は、音声を認識することです。各 API には、オーディオ ソースの音声を認識するためのさまざまな設定と関数があります。ここでは、recognize_sphinx() を選択します: CMU Sphinx - PocketSphinx のインストールが必要です (## をサポート) #オフライン音声認識) 次に、pip コマンドを使用して PocketSphinx をインストールする必要がありますが、インストール プロセス中に、赤いフォントで大量のエラーが発生する傾向があります。

オーディオ ファイルの使用

関連するオーディオ ファイルをダウンロードし、特定のディレクトリに保存します (ubuntu デスクトップに直接保存します)

注:
AudioFile クラスは、オーディオ ファイルのパス ファイルの内容を読み取り、処理するためのコンテキスト マネージャー インターフェイスを初期化し、提供します。
SpeechRecognition は現在次のファイル タイプをサポートしています:

  • WAV: PCM/LPCM 形式である必要があります

  • AIFF

  • ##AIFF-CFLAC: 初期 FLAC 形式である必要があります。OGG-FLAC 形式は利用できません
  • 英語音声認識

上記の完了後基本的な作業では、英語の音声認識を行うことができます。

(1) ターミナルを開きます

(2) 音声テスト ファイルが配置されているディレクトリを入力します (ブロガーはデスクトップです)
(3) Python インタープリタを開きます
(4)以下に示す関連コマンド

Pythonを使用してLinux上で音声認識機能を実装する方法最後に、音声テキスト変換コンテンツが表示されます (これは匂いがするでしょう...)。実際、その効果は非常に優れています。良い!英語なのでノイズがありません。

音声認識に対するノイズの影響

ノイズは現実世界に存在し、すべての録音にはある程度のノイズが含まれており、未処理のノイズは音声認識アプリケーションの精度を損なう可能性があります。

転写しようとしても効果が良くない場合は、Recognizer クラスのAdjust_for_ambient_noise() コマンドを呼び出してみることができます。

マイクの使用

SpeechRecognizer を使用してマイクにアクセスするには、PyAudio パッケージをインストールする必要があります。
Debian ベースの Linux (Ubuntu など) を使用している場合は、apt を使用して PyAudio をインストールできます。 sudo apt-get install python-pyaudio python3-pyaudio pip3 install を有効にする必要がある場合があります。インストール完了後の pyaudio (特に仮想実行時)。
pyaudio をインストールした後、Python を使用して音声入力を生成し、関連ファイルを生成できます。
pocketphinx の使用に関する注意事項:
サポートされるファイル形式:wav
オーディオ ファイルのデコード要件:16KHZ、mono
Python を使用して録音を実装し、関連ファイルを生成します。プログラム コードは次のとおりです。

from pyaudio import PyAudio, paInt16
import numpy as np
import wave
class recoder:
     NUM_SAMPLES = 2000   
     SAMPLING_RATE = 16000  
     LEVEL = 500     
     COUNT_NUM = 20   
     SAVE_LENGTH = 8     
     Voice_String = []
     def savewav(self,filename):
         wf = wave.open(filename, 'wb')
         wf.setnchannels(1)
         wf.setsampwidth(2)
         wf.setframerate(self.SAMPLING_RATE)
         wf.writeframes(np.array(self.Voice_String).tostring())
         wf.close()
     def recoder(self):
         pa = PyAudio()
         stream = pa.open(format=paInt16, channels=1, rate=self.SAMPLING_RATE, input=True,frames_per_buffer=self.NUM_SAMPLES)
         save_count = 0
         save_buffer = []
         while True:
            string_audio_data = stream.read(self.NUM_SAMPLES)
            audio_data = np.fromstring(string_audio_data, dtype=np.short)
            large_sample_count = np.sum(audio_data > self.LEVEL)
            print(np.max(audio_data))
            if large_sample_count > self.COUNT_NUM:
                save_count = self.SAVE_LENGTH
            else:
                save_count -= 1
            if save_count < 0:
                save_count = 0
            if save_count > 0:
                save_buffer.append(string_audio_data )
            else:
                if len(save_buffer) > 0:
                    self.Voice_String = save_buffer
                    save_buffer = []
                    print("Recode a piece of voice successfully!")
                    return True
		 else:
                    return False
if __name__ == "__main__":
    r = recoder()
    r.recoder()
    r.savewav("test.wav")

注: Python インタープリターを使用して実装する場合は、必ずスペースに注意してください。 ! !
最終的に生成されたファイルは、Python インタープリター セッションが配置されているディレクトリにあります。play を通じて再生してテストできます。play がインストールされていない場合は、apt コマンドを通じてインストールできます。

中国語の音声認識

前の作業を完了した後、音声認識プロセスについてはある程度理解しましたが、中国人として、中国語の音声認識を行う必要があります。

CMU Sphinx 音声認識ツールキットから、対応する中国語のアドミッションと言語モデルをダウンロードする必要があります。

Pythonを使用してLinux上で音声認識機能を実装する方法

写真にマークされている単語は北京語です。関連する音声認識ツールキットをダウンロードします。

ただし、zh_broadcastnews_64000_utf8.DMP を language-model.lm.bin に変換し、zh_broadcastnews_16k_ptm256_8000.tar.bz2 を解凍して zh_broadcastnews_ptm256_8000 フォルダーを取得する必要があります。
ブロガーの方法を学び、Ubuntu で speech_recognition フォルダーを見つけてください。関連フォルダーが見つからない友達もたくさんいるかもしれませんが、実際には隠しファイルの下にあります。フォルダーの右上隅にある 3 本のバーをクリックします。下の図に示すように:

Pythonを使用してLinux上で音声認識機能を実装する方法

次に、下の図に示すように、[隠しファイルを表示] をオンにします:

Pythonを使用してLinux上で音声認識機能を実装する方法

次に、次のディレクトリをたどることでこれを見つけることができます:

Pythonを使用してLinux上で音声認識機能を実装する方法

## そして、元の

en-US の名前を en-US-bak## に変更します。 # 、新しいフォルダー en-US を作成し、抽出した zh_broadcastnews_ptm256_8000acoustic-model に変更し、chinese.lm.bin language に変更します - model.lm.bin のサフィックス pronounciation-dictionary.dicdict に変更し、これら 3 つのファイルを en-US にコピーします。同時に、元の en-US ファイル ディレクトリにある LICENSE.txt を現在のフォルダーにコピーします。 最後に、このフォルダーには次のファイルがあります:

Pythonを使用してLinux上で音声認識機能を実装する方法これで、マイクを通じて音声ファイル (「test.wav」) を録音できます

Inファイル ディレクトリで Python インタープリタを開き、次の内容を入力します:


Pythonを使用してLinux上で音声認識機能を実装する方法 すると出力が表示されますが、ここでは 2 つの中国について話していますが、他の中国についてもテストしました。発見と認識の効果。非常に悪い! ! !


小規模な中国語認識

公式のものは効果が低すぎてほとんど使用できません。そこで、いろいろな記事を読んで最適化方法を考えたのですが、それは小規模な認識にしか適していません。一部のコマンドなどは問題ないはずですが、チャットなどはうまく動作しない可能性があります。

先ほどコピーした4つのフォルダーを見つけます。pronounciation-dictionary.dictというフォルダーがあります。それを開くと、次の内容があります。


Pythonを使用してLinux上で音声認識機能を実装する方法こんな感じです。この内容は「辞書で使われる言葉と日常のコミュニケーションで使われる言葉の間には大きな隔たりがある」に似ています。後は、使い慣れた言葉に置き換えるだけです。試してみたところ、結果は本当に良かったです。認識効果は本当に良いです!

私のアプローチは次のとおりです:

(1) 画像の赤いマークより上のコンテンツを保持し、赤いマークより下のコンテンツを削除します。もちろん、保険上の理由から、このファイルをバックアップすることをお勧めします。
(2) 赤線の下に識別したい内容を入力してください! (ピンインとは違う、ルールに従って入力してください!!!) 最近、新型肺炎の状況も良くなりつつありますが、一番よく聞かれるのは「頑張れ中国」ですので、今日の内容は「頑張れ中国」を「頑張れ中国」に変換するというものです。文章!早く学校が始まるといいですね、ははは。

Pythonを使用してLinux上で音声認識機能を実装する方法3) 次のように入力します:

Pythonを使用してLinux上で音声認識機能を実装する方法

音声合成

音声合成についての私の個人的な理解は、テキスト読み上げです。ただし、この文では、 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.Synthetic('Hello Baidu', 'zh', 1, { 'vol': 5,'spd': 3) と設定できます。 ,'pit':9,'per': 3})音量、口調、スピード、男性/女性/ロリ/屈託なし。

以上がPythonを使用してLinux上で音声認識機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Pythonの主な目的:柔軟性と使いやすさPythonの主な目的:柔軟性と使いやすさApr 17, 2025 am 12:14 AM

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Python:汎用性の高いプログラミングの力Python:汎用性の高いプログラミングの力Apr 17, 2025 am 12:09 AM

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

1日2時間でPythonを学ぶ:実用的なガイド1日2時間でPythonを学ぶ:実用的なガイドApr 17, 2025 am 12:05 AM

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Python vs. C:開発者の長所と短所Python vs. C:開発者の長所と短所Apr 17, 2025 am 12:04 AM

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Python:時間のコミットメントと学習ペースPython:時間のコミットメントと学習ペースApr 17, 2025 am 12:03 AM

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター