26

音声認識をどこから始めればよいのか知りたいです。ライブラリやかなり「ブラックボックス化」されたものではなく、代わりに、実際にどこで簡単な音声認識スクリプトを作成できるかを知りたいです。私はいくつかの検索を行って見つけましたが、それほど多くはありませんが、私が見たのは、テキストを形成するためにつなぎ合わせることができる「音」または音節の辞書があるということです。基本的に私の質問は、これをどこから始めればよいのかということです。

また、これは少し楽観的であるため、プログラムで使用するライブラリ(今のところ)でも問題ありません。一部の音声テキストライブラリとAPIは、1つの結果しか吐き出さないことがわかりました。これは問題ありませんが、実現不可能です。私の現在のプログラムはすでに文法と入力されたテキストのすべてをチェックしているので、私が言うなら、それはそれぞれをチェックして意味のないものを除外するよりも、スピーチからテキストへのソフトウェアからの上位10の結果です。

4

8 に答える 8

7

私は質問が古いことを知っていますが、将来の人々のためだけです:

speech_recognition-Moduleを使用していますが、気に入っています。唯一のことは、Google を使用して音声を認識するため、インターネットが必要なことです。しかし、それはほとんどの場合問題にはなりません。認識はほぼ完璧に機能します。

編集:

このspeech_recognitionパッケージは、Google だけでなく、CMUsphinx (オフライン認識を可能にする) などを使用して翻訳できます。唯一の違いは、認識コマンドの微妙な変更です。

https://pypi.python.org/pypi/SpeechRecognition/

ここに小さなコード例があります:

import speech_recognition as sr

r = sr.Recognizer()
with sr.Microphone() as source:                # use the default microphone as the audio source
    audio = r.listen(source)                   # listen for the first phrase and extract it into audio data

try:
    print("You said " + r.recognize_google(audio))    # recognize speech using Google Speech Recognition - ONLINE
    print("You said " + r.recognize_sphinx(audio))    # recognize speech using CMUsphinx Speech Recognition - OFFLINE
except LookupError:                            # speech is unintelligible
    print("Could not understand audio")

私にとってうまくいかないことが1つだけあります。それは、無限ループで聞くことです。数分後、電話が切れます。(クラッシュしているのではなく、応答していないだけです。)

編集: 無限ループなしでマイクを使用する場合は、録音の長さを指定する必要があります。コード例:

import speech_recognition as sr

r = sr.Recognizer()
with sr.Microphone() as source:
    print("Speak:")
    audio = r.listen(source, None, "time_to_record")  # recording
于 2015-12-25T09:42:18.617 に答える
7

音声認識を根本から理解したい場合は、Python 用の優れた信号処理パッケージを探してから、ソフトウェアとは別に音声認識について読んでください。

しかし、音声認識は非常に複雑な問題です (基本的には、私たちが話すときに音がさまざまな方法で相互作用するためです)。手に入れることができる最高の音声認識ライブラリから始めたとしても、何もする必要がないことに気付くことは決してありません。

于 2012-09-02T21:38:23.100 に答える
7

更新:これはもう機能していません

グーグルがプラットフォームを閉鎖したため

--

https://pypi.python.org/pypi/pygsrを使用できます

$> pip install pygsr

使用例:

from pygsr import Pygsr
speech = Pygsr()
# duration in seconds
speech.record(3)
# select the language
phrase, complete_response = speech.speech_to_text('en_US')

print phrase
于 2013-05-14T19:33:45.870 に答える
7

Pocketsphinx も良い代替手段です。スクリプトへの統合を容易にする、SWIG を通じて提供される Python バインディングがあります。

例えば:

from os import environ, path
from itertools import izip

from pocketsphinx import *
from sphinxbase import *

MODELDIR = "../../../model"
DATADIR = "../../../test/data"

# Create a decoder with certain model
config = Decoder.default_config()
config.set_string('-hmm', path.join(MODELDIR, 'hmm/en_US/hub4wsj_sc_8k'))
config.set_string('-lm', path.join(MODELDIR, 'lm/en_US/hub4.5000.DMP'))
config.set_string('-dict', path.join(MODELDIR, 'lm/en_US/hub4.5000.dic'))
decoder = Decoder(config)

# Decode static file.
decoder.decode_raw(open(path.join(DATADIR, 'goforward.raw'), 'rb'))

# Retrieve hypothesis.
hypothesis = decoder.hyp()
print 'Best hypothesis: ', hypothesis.best_score, hypothesis.hypstr

print 'Best hypothesis segments: ', [seg.word for seg in decoder.seg()]

# Access N best decodings.
print 'Best 10 hypothesis: '
for best, i in izip(decoder.nbest(), range(10)):
    print best.hyp().best_score, best.hyp().hypstr

# Decode streaming data.
decoder = Decoder(config)
decoder.start_utt('goforward')
stream = open(path.join(DATADIR, 'goforward.raw'), 'rb')
while True:
    buf = stream.read(1024)
    if buf:
        decoder.process_raw(buf, False, False)
    else:
        break
decoder.end_utt()
print 'Stream decoding result:', decoder.hyp().hypstr
于 2014-06-23T17:05:21.683 に答える
6

Python での音声認識について詳しく知りたい場合は、次のリンクを参照してください。

于 2015-12-17T09:05:03.537 に答える
4

Dragonflyは、Windows での音声認識のためのクリーンなフレームワークを提供します。使用例については、ドキュメントを確認してください。Dragonfly が提供する大規模な機能を探しているわけではないので、もうメンテナンスされていないPySpeechライブラリを調べてみてください。

彼らのソースコードは理解しやすいように見えます。最初に見たいのはおそらくそれです

于 2012-09-02T20:04:33.847 に答える