継続的に生成される多数の.wav
ファイルに対して音声認識を実行したいと思います。Sphinx4を使用したオフライン音声テキストの品質問題
は、オンライン音声からテキストへのAPIサービスが増えあります(例えばGoogle Cloud Speech、Amazon Lex、Twilio Speech Recognition、Nexmo 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をうまく使っているかどうか知りたいのですが、もしそうなら、どのような調整が行われたのですか?他の音響/言語モデル、辞書などが優れていますか?私が検討すべきオフラインの音声対テキストの他のオープンソースの提案?