美文网首页
python制作录音功能

python制作录音功能

作者: ppmoon | 来源:发表于2017-09-20 20:02 被阅读1685次

    依赖库

    这里我们主要依赖pyaudio这个库,操作比较简单。
    http://people.csail.mit.edu/hubert/pyaudio/docs/

    安装我们需要的库

    pip install pyaudio
    

    录音功能代码

    import pyaudio
    import wave
    
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 2
    RATE = 44100
    RECORD_SECONDS = 5
    WAVE_OUTPUT_FILENAME = "output.wav"
    
    p = pyaudio.PyAudio()
    
    stream = p.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("* done recording")
    
    stream.stop_stream()
    stream.close()
    p.terminate()
    
    wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()
    

    以上代码会录制一段5秒的声音在windows上存储为wav格式的音频。

    音频相关的参数详解

    wav

    WAV是windows平台上的一种音频格式,44.1k的取样频率,16位量化数字和CD音乐相差无几。
    上述代码当中
    CHUNK wav文件是由若干个CHUNK组成的,CHUNK我们就理解成数据包或者数据片段。
    FORMAT 这个参数后面写的pyaudio.paInt16表示我们使用量化位数 16位来进行录音。
    CHANNELS 代表的是声道,这里使用的双声道。
    RATE 采样率 44.1k,每秒采样44100个点。
    RECORD_SECONDS 录制时间这里设定了5秒

    关于代码中的循环

    代码后面有写一个循环根据采样率和数据包以及秒数流式的将数据写入到文件当中。

    相关文章

      网友评论

          本文标题:python制作录音功能

          本文链接:https://www.haomeiwen.com/subject/rxzosxtx.html