これは、オーディオ ファイル (wav 形式) 内の単語またはフレーズの検索に役立つ Python ライブラリおよびコマンド ライン ツールです。また、初期の検索機能に基づいて構築されており、[いわゆる] 高度な検索機能も提供されます。
ドキュメントを読むには、ここにアクセスしてください。
ターミナルを開いて次のように入力します。
pip インストール SimpleAudioIndexer
インストールの詳細については、こちらのドキュメントを参照してください。
ネイティブ インストールを実行できない場合、または Windows システムを使用している場合は、リポジトリ内に dockerfile が含まれています。
ターミナルを開いて次のように入力します。
pip アンインストール SimpleAudioIndexer
ただし、sox をアンインストールするかどうかは、Linux システムと Mac システムのどちらを使用しているかによって異なります。詳細については、こちらをご覧ください。
次の音声ファイルがあるとします。
簡単にするために、空のディレクトリにダウンロードします。このディレクトリを SRC_DIR と呼び、このオーディオ ファイルの名前を small_audio.wav と呼びます。
検索する方法は次のとおりです。
ターミナルを開いて入力します。
$ sai --mode "ibm" --username_ibm USERNAME --password_ibm PASSWORD --src_dir SRC_DIR --search "コールド" {'呼び出し先': {'small_audio.wav': [(1.25, 1.71)]}}
USERNAME と PASSWORD を IBM Watson の資格情報に置き換え、SRC_DIR を準備したディレクトリへの絶対パスに置き換えます。
出力は、上記と同様に、クエリ、そのクエリが含まれるファイル、およびそのクエリのすべて (開始 2 番目、終了 2 番目) を含む辞書になります。
すべてのコマンドは他のエンジン (つまり、Pocketsphinx) に対して均一に機能することに注意してください。たとえば、上記のコマンドは次のように入力できます。
$ sai --mode "cmu" --src_dir SRC_DIR --search "lives" {'lives': {'small_audio.wav': [(3.12, 3.88)]}}
これは、タイムスタンプを取得するために Watson の代わりに Pocketsphinx を使用します。 Pocketsphinx の品質/精度は Watson よりもはるかに低いことに注意してください。
単語を検索する代わりに、次のような正規表現パターンと一致させることもできます。
$ sai --mode ibm --src_dir SRC_DIR --username_ibm USERNAME --password_ibm PASSWORD --regexp " [az][az] " {u' の : {'small_audio.wav': [(2.81, 2.93)]}, {u' から ': {'small_audio.wav': [(1.71, 1.81)]}}
二文字言葉で検索した結果です。結果は任意の正規表現と一致することに注意してください。
コマンド ライン スクリプトからインデックス付きデータを保存およびロードすることもできます。詳細については、こちらをご覧ください。
このファイルがあるとします
>> > from SimpleAudioIndexer import SimpleAudioIndexer as sai
その後、sai のインスタンスを作成する必要があります。
>> > indexer = sai ( mode = "ibm" , src_dir = "SRC_DIR" , username_ibm = "USERNAME" , password_ibm = "PASSWORD" )
これで、index_audio メソッドを呼び出して、利用可能なすべてのオーディオ ファイルにインデックスを付けることができます。
>> > indexer . index_audio ()
検索ジェネレーターを使用することもできます。
>> > searcher = indexer . search_gen ( query = "called" )
>> > print ( next ( searcher ))
{ 'Query' : 'called' , 'File Name' : 'small_audio.wav' , 'Result' : ( 1.25 , 1.71 )}
これで、search_gen にさらに多くの引数が実装されました。検索で大文字と小文字を区別したいとします (デフォルトでは区別されません)。または、フレーズを探したかったが、タイミングのギャップがあり、インデクサーがそれを正しく検出できなかった場合は、timing_error を指定できます。または、単語が完全に欠落している場合は、missing_word_tolerance などを指定できます。
完全なリストについては、こちらの API リファレンスをご覧ください。
search_all メソッドを呼び出して、すべてのオーディオ ファイル内のクエリのリストを検索することもできることに注意してください。
最後に、正規表現検索を実行できるようになりました。
>> > print ( indexer . search_regexp ( pattern = "[A-Z][^l]* " )
{ u'Americans are ca' : { 'small_audio.wav' : [( 0.21 , 1.71 )]}}
さらに多くの機能が実装されています。詳細な説明については、こちらのドキュメントをお読みください。
コードやアイデアを提供したい場合、バグ リクエストを提出するか、フィードバックを提供したい場合は、CONTRIBUTING ファイルにアクセスしてください。
このプロジェクトの貢献者のリストも参照してください。
このプロジェクトは、Apache v2.0 ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。