1

継続的に生成される多数の.wavファイルに対して音声認識を実行したいと思います。Sphinx4を使用したオフライン音声テキストの品質問題

は、オンライン音声からテキストへのAPIサービスが増えあります(例えばGoogle Cloud SpeechAmazon LexTwilio Speech RecognitionNexmo Voiceなど)接続されたアプリケーションのためにうまく動作しますが、このユースケースには適していませんでしょうが原因コストと帯域幅。

CMUSphinx(CMU = Carnegie Mellon University)は音声認識に人気があります。

私は「こんにちは世界の例を試してみました:

import edu.cmu.sphinx.api.Configuration; 
import edu.cmu.sphinx.api.SpeechResult; 
import edu.cmu.sphinx.api.StreamSpeechRecognizer; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 

public class Main { 

    public static void main(String[] args) throws IOException { 

     Configuration configuration = new Configuration(); 

     configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 
     configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict"); 
     configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin"); 

     StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration); 
     InputStream stream = new FileInputStream(new File("src/main/resources/test.wav")); 

     recognizer.startRecognition(stream); 
     SpeechResult result; 
     while ((result = recognizer.getResult()) != null) { 
      System.out.format("Hypothesis: %s\n", result.getHypothesis()); 
     } 
     recognizer.stopRecognition(); 

    } 
} 

結果は少し残念でした。 「test.wav」ファイルには、次のオーディオが含まれています。

これは最初の話す間隔です。 の最初の瞬間が終わった後、これが話す第2の間隔です。 3番目の の沈黙の後、これは話すの第3の間隔と最後の です。

これは以下のように解釈された:これは 沈黙の一次モーメントするための第1区間に言えば...である

全て話すの第二です... 黙祷のためにのためにこれは最後にいくつかの話しがあります

ほとんどの単語がキャプチャされていますが、意味が失われるほど出力が文字化けしています。私はその後、発言が鮮明で、その写しは完全にばかげていたニュース記事をダウンロードした。それは非常に酔っている人が外国語を聞くのと同じくらい捉えました。

誰かがSphinx4をうまく使っているかどうか知りたいのですが、もしそうなら、どのような調整が行われたのですか?他の音響/言語モデル、辞書などが優れていますか?私が検討すべきオフラインの音声対テキストの他のオープンソースの提案?

答えて

0

これはFAQに文書化されています些細な問題であることが判明:「Q: What is sample rate and how does it affect accuracy

[...]我々はまだサンプル・レートを検出することはできません。したがって、デコーダを使用する前に、 は、デコーダの両方のサンプルレートが入力オーディオの サンプルレートと一致し、オーディオの帯域幅がモデルのトレーニングに使用された帯域幅である と一致することを確認する必要があります。不一致の結果、 の精度が非常に悪くなります。

ニュース映像は、44.1khzで記録されたBBCオーディオステレオでした。

$ soxi GlobalNewsPodcast-20170828-CatastrophicFloodsRisin.wav 

Input File  : 'GlobalNewsPodcast-20170828-CatastrophicFloodsRisin.wav' 
Channels  : 2 
Sample Rate : 44100 
Precision  : 16-bit 
Duration  : 00:29:23.79 = 77783087 samples = 132284 CDDA sectors 
File Size  : 311M 
Bit Rate  : 1.41M 
Sample Encoding: 16-bit Signed Integer PCM 

私はモノラルに変換:

$ sox GlobalNewsPodcast-20170828-CatastrophicFloodsRisin.wav GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono.wav remix 1,2 
$ soxi GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono.wav 

Input File  : 'GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono.wav' 
Channels  : 1 
Sample Rate : 44100 
Precision  : 16-bit 
Duration  : 00:29:23.79 = 77783087 samples = 132284 CDDA sectors 
File Size  : 156M 
Bit Rate  : 706k 
Sample Encoding: 16-bit Signed Integer PCM 

を次に16kHzのにダウンサンプリング:

$ sox GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono.wav -r 16k GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono16k.wav 
$ soxi GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono16k.wav 

Input File  : 'GlobalNewsPodcast-20170828-CatastrophicFloodsRisinMono16k.wav' 
Channels  : 1 
Sample Rate : 16000 
Precision  : 16-bit 
Duration  : 00:29:23.79 = 28220621 samples ~ 132284 CDDA sectors 
File Size  : 56.4M 
Bit Rate  : 256k 
Sample Encoding: 16-bit Signed Integer PCM 

は、今ではかなりうまく働いています。

緊急当局は、彼らが万人から に会場は千派手な人々はすでに は一時的な避難所で世話をしているテキサス州ボルトンでの支援を求める期待すると述べたエンジン上でされています。ここではニュース記事から転写された音声の抜粋ですヒューストンの街の感覚を保護する2つのダウンから 水を解放することに大きな...

関連する問題