我想合并两个代码,但一直给我一个错误

时间:2019-04-30 17:27:50

标签: audio merge raspberry-pi record

嗨,我是python的新手,我试图在响度超过某个值(在代码200中)时记录声音。

最初,我有两个不同的代码段。一种用于记录,另一种用于检测响度。我想合并在一起,并在响度超过200时记录声音。

但这总是给我一个错误,所以我想知道我缺少哪一部分。 如果有人帮助我解决这个问题,我将不胜感激。

import time
import grovepi
import os
import sys
sys.path.insert(0,'.')
from audio import soundrecord

loudness_sensor = 0

while True:
    try:
        # Read the sound level
        sensor_value = grovepi.analogRead(loudness_sensor)

        print("sensor_value = %d" %sensor_value)
        time.sleep(.5)
        if sensor_value> 200:
            soundrecord()
            time.sleep(10)

    except IOError:
        print ("Error")

我将下面的录音代码定义为录音功能,并将其放在同一目录中

import pyaudio
import wave

def soundrecord():

    form_1 = pyaudio.paInt16 # 16-bit resolution
    chans = 1 # 1 channel
    samp_rate = 44100 # 44.1kHz sampling rate
    chunk = 4096 # 2^12 samples for buffer
    record_secs = 3 # seconds to record
    dev_index = 2 # device index found by p.get_device_info_by_index(ii)

    wav_output_filename = 'test1.wav' # name of .wav file


    audio = pyaudio.PyAudio() # create pyaudio instantiation

    # create pyaudio stream
    stream = audio.open(format = form_1,rate = samp_rate,channels = chans, \
                        input_device_index = dev_index,input = True, \
                        frames_per_buffer=chunk)
    print("recording")
    frames = []

    # loop through stream and append audio chunks to frame array
    for ii in range(0,int((samp_rate/chunk)*record_secs)):
        data = stream.read(chunk)
        frames.append(data)

    print("finished recording")

    # stop the stream, close it, and terminate the pyaudio instantiation
    stream.stop_stream()
    stream.close()
    audio.terminate()

    # save the audio frames as .wav file
    wavefile = wave.open(wav_output_filename,'wb')
    wavefile.setnchannels(chans)
    wavefile.setsampwidth(audio.get_sample_size(form_1))
    wavefile.setframerate(samp_rate)
    wavefile.writeframes(b''.join(frames))
    wavefile.close()

期待:响度超过200时记录声音

实际:

sensor_value = 75
sensor_value = 268
Error
sensor_value = 360
Error
sensor_value = 48
sensor_value = 39
sensor_value = 79

0 个答案:

没有答案