2016-03-31 7 views
0

私は5秒間私の声を記録し、wavファイルに保存しますPythonとこのスクリプトでループを作成する方法は?

import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEText import MIMEText 
from email.MIMEBase import MIMEBase 
from email import encoders 
import pyaudio 
import wave 
from time import sleep 
FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
CHUNK = 1024 
RECORD_SECONDS = 5 
WAVE_OUTPUT_FILENAME = "file.wav" 

audio = pyaudio.PyAudio() 

# start Recording 
stream = audio.open(format=FORMAT, channels=CHANNELS, 
      rate=RATE, input=True, 
      frames_per_buffer=CHUNK) 
print "recording..." 
frames = [] 

for i in range(0, int(RATE/CHUNK * RECORD_SECONDS)): 
data = stream.read(CHUNK) 
frames.append(data) 
print "finished recording" 




# stop Recording 
stream.stop_stream() 
stream.close() 
audio.terminate() 

waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 
waveFile.setnchannels(CHANNELS) 
waveFile.setsampwidth(audio.get_sample_size(FORMAT)) 
waveFile.setframerate(RATE) 
waveFile.writeframes(b''.join(frames)) 
waveFile.close() 
sleep(10) 

あるスクリプトを持っています。今ループにそれは私がスクリプトの底面と運とスクリプトの先頭にコマンドinvalid_input = Falseでコマンド

while invalid_input : 
    start() 

を追加しようとしています。開始時にこのスクリプトをループする方法を理解してください。 sleep(10)コマンドの後に入力します。私は明確ではなかったと思う:私はpythonで

よろしく、

EDITを初心者ですとしても私と一緒に協力してください。
一度起動してスクリプトの終わりに達すると、もう一度上に行き、somoneがそれを殺すまで何度も繰り返します。

+0

forループの間隔が正しくない – ryekayo

+0

@ryekayoどこですか? –

+0

@ Mr.Helpyループの行をインデントする必要があります – Cisplatin

答えて

0

Pythonでループを作成するには、正しくインデントします。あなたのコードでは、Pythonの規則に従って正しく字下げされていません。

+0

もう一度やりましたが、今は数分の1秒間開いて閉じます –

+0

それについてあなたの質問に詳細を追加できますか?あなたのタイトルとあなたの質問は正確には一致しません – ryekayo

+0

申し訳ありません私の悪い私はそれを修正 –

1

コメントに記載されているとおり、インデントする必要があります。 、私はstart()のように定義されているかわからないんだけど、それはデフォルトでスクリプトを起動しません、

def function(): 
    #Do stuff 

次:Pythonは代わりにendのインデントや{} EXを使用して使用するコーディング言語でありますdef start():が必要で、その機能の中に録音と保存のスクリプトを入れてください。そして、あなたは後でそれを呼び出すことができますstart()

最後に、あなたのwhileステートメントは逆です。 invalid_inputがfalseのときにループを実行する場合は、while invalid_input==False:

関連する問題