2017-12-09 12 views
1

音声を使用して音声認識でテキストファイルを作成しようとしています。音声は.wavの形式です。これは字幕を取得することです。私はすでにテキストファイルを持っていますが、問題は今テキストがロングググの行で生成されていることです。音声を使用した音声認識方法から行単位でテキストファイルを書き込む

私はそれらをtkinterウィンドウに字幕を表示したいので、行単位で(5ワード後には次の行に移動するように)したいと思います。私はすでにtkinterウィンドウに表示されていると言っているので、問題は行単位でテキストファイルを生成しないことだけです。 plsは私を助けます。これは私がまだ学位の学生である私の最後の年のプロジェクトです。

AUDIO_FILE = path.get() 

    r= sr.Recognizer() 
    with sr.AudioFile(AUDIO_FILE) as source: 
     audio = r.record(source) 

    try: 
     filename = ".txt" 
     f = open(filename , "w+") 

     a = f.writelines(r.recognize_google(audio)) 
     b = a.split("\n\n") 
     b[:] = (value for value in b if value is not '\t') 
     f.close() 

    except sr.UnknownValueError: 
     print("Google could not understand audio") 
    except sr.RequestError as e: 
     print("Google error; {0}".format(e)) 

    return filename 

多分あなたは、行ごとにオーディオからテキストファイルを生成/書き出すために配列を書き込む方法を知っています。私は繰り返し "LINE by LINE"をしたい。

これは私が持っているエラーです。私を助けてください。あなたはf.writelines()が何かを返すことを考えているようだので

b = a.split("\n\n") 
AttributeError: 'NoneType' object has no attribute 'split' 
+0

質問には完全なエラーメッセージ(トレースバック)を必ず入れてください(テキストとして、スクリーンショットではありません)。その他の有用な情報があります。 – furas

+0

は次回の予定です。申し訳ありませんbcsは私のここに新しいです。とにかく私のためにそれらを編集していただきありがとうございます。 – jennisa

答えて

1

b = a.split("\n\n")上のあなたの誤差があります。そうではないので、aの値はNoneであり、分割することはできません。

ドキュメントこれはwritelines()が何をするかについて述べている:

writelinesライン

は、ストリームへの行のリストを書きます。行区切り文字は追加されないので、通常は、提供された各行に末尾に区切り文字「 」が付いています。あなたは、出力ファイルに改行があるようにしたい場合は

そう、あなたがwritelines()を呼び出す前にそこにそれらを配置する必要があります。

しかし、writelines()は文字列のリストを期待しているので、呼び出すべきではありません。recognize_google()は文字列を返します。

長い文字列が1行に5つ必要なため、5語の行にテキストを分割し、各行にwrite()を呼び出す必要があります。このようなもの:

recognized_text = r.recognize_google(audio) 
remainder = recognized_text.split() 
while remainder: 
    line, remainder = remainder[:5], remainder[5:] 
    f.write(' '.join(line) + "\n") 
+0

ありがとう、私は言ったように私はこの方法のようにしようとしましたが、1行に1アルファベットが表示されます。私はそれらを5つの単語を含む1つのセンテンスのように見せたい、そして5つの単語の後でそれは次の行に行きます。あなたは配列メソッドを表示できますか? – jennisa

+0

編集されました。私はあなたのコードが 'writelines()'を呼び出しているのを見て、あなたが期待していた文字列のリストを渡しているとばかげて仮定しました。 – BoarGules

+0

本当にありがとう!あなたはすでに私の最終年度のプロジェクトを完了するために一歩近づくのを助けます。 :))))) わかった! – jennisa