国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現錄音小程序

2020-02-15 22:52:20
字體:
來源:轉載
供稿:網友

本文為大家分享了python實現錄音小程序的具體代碼,供大家參考,具體內容如下

學習目標:掌握python的pyaudio擴展包和Wave模塊錄制語音的方法

Wav音頻:聲道數,采樣頻率,量化位數

python Wav包是自帶的,pyaudio需要下載

pip3 install pyaudio

python讀Wav文件:

fp=wave.open('','rb')  nf=fp.getnframes()#獲取文件的采樣點數量  print('sampwidth:',fp.getsampwidth())  print('framerate:',fp.getframerate())  print('channels:',fp.getnchannels())  f_len=nf*2#文件長度計算,每個采樣2個字節  audio_data=fp.readframes(nf)

python寫Wav文件:

def save_wave_file(filename,data):  '''save the date to the wavfile'''  wf=wave.open(filename,'wb')  wf.setnchannels(channels)#聲道  wf.setsampwidth(sampwidth)#采樣字節 1 or 2  wf.setframerate(framerate)#采樣頻率 8000 or 16000  wf.writeframes(b"".join(data))#https://stackoverflow.com/questions/32071536/typeerror-sequence-item-0-expected-str-instance-bytes-found  wf.close()

利用PyAudio錄音:

def my_record():  pa=PyAudio()  stream=pa.open(format = paInt16,channels=1,          rate=framerate,input=True,          frames_per_buffer=NUM_SAMPLES)  my_buf=[]  count=0  while count<TIME*20:#控制錄音時間    string_audio_data = stream.read(NUM_SAMPLES)#一次性錄音采樣字節大小    my_buf.append(string_audio_data)    count+=1    print('.')  save_wave_file('01.wav',my_buf)  stream.close()

利用PyAudio播放音頻

chunk=2014def play():  wf=wave.open(r"01.wav",'rb')  p=PyAudio()  stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=  wf.getnchannels(),rate=wf.getframerate(),output=True)  while True:    data=wf.readframes(chunk)    if data=="":break    stream.write(data)  stream.close()  p.terminate()

完整錄音播放的demo

import wavefrom pyaudio import PyAudio,paInt16framerate=8000NUM_SAMPLES=2000channels=1sampwidth=2TIME=2def save_wave_file(filename,data):  '''save the date to the wavfile'''  wf=wave.open(filename,'wb')  wf.setnchannels(channels)  wf.setsampwidth(sampwidth)  wf.setframerate(framerate)  wf.writeframes(b"".join(data))  wf.close()def my_record():  pa=PyAudio()  stream=pa.open(format = paInt16,channels=1,          rate=framerate,input=True,          frames_per_buffer=NUM_SAMPLES)  my_buf=[]  count=0  while count<TIME*20:#控制錄音時間    string_audio_data = stream.read(NUM_SAMPLES)    my_buf.append(string_audio_data)    count+=1    print('.')  save_wave_file('01.wav',my_buf)  stream.close()chunk=2014def play():  wf=wave.open(r"01.wav",'rb')  p=PyAudio()  stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=  wf.getnchannels(),rate=wf.getframerate(),output=True)  while True:    data=wf.readframes(chunk)    if data=="":break    stream.write(data)  stream.close()  p.terminate()if __name__ == '__main__':  my_record()  print('Over!')   play()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涞源县| 康马县| 华容县| 焦作市| 兖州市| 黄冈市| 札达县| 扶沟县| 沁阳市| 万年县| 调兵山市| 沧源| 寻甸| 延津县| 白朗县| 鲜城| 安乡县| 兴业县| 赤水市| 碌曲县| 湾仔区| 临猗县| 高安市| 南漳县| 水富县| 西畴县| 抚州市| 本溪| 万山特区| 九龙县| 四川省| 封丘县| 萨嘎县| 汶川县| 准格尔旗| 陕西省| 桦甸市| 天镇县| 竹溪县| 瑞安市| 富平县|