方法一:
import pyaudio,wave,cv2,threading
wav = pyaudio.PyAudio()
# 打開聲卡,設置 采樣深度為16位、聲道數為2、采樣率為16、輸入、采樣點緩存數量為2048
stream = wav.open(format=pyaudio.paInt16, channels=2, rate=16000, input=True, frames_per_buffer=2048)
record_buf = []
count = 0
while count <500:
audio_data = stream.read(2048) # 讀出聲卡緩沖區的音頻數據
record_buf.append(audio_data) # 將讀出的音頻數據追加到record_buf列表
count += 1
if cv2.waitKey(1) == 27:
break
print(count)
wf = wave.open('01.wav', 'wb') # 創建一個音頻文件,名字為“01.wav"
wf.setnchannels(2) # 設置聲道數為2
wf.setsampwidth(2) # 設置采樣深度為
wf.setframerate(16000) # 設置采樣率為16000
# 將數據寫入創建的音頻文件
wf.writeframes("".encode().join(record_buf))
# 寫完后將文件關閉
wf.close()
# 停止聲卡
stream.stop_stream()
# 關閉聲卡
stream.close()
# 終止pyaudio
wav.terminate()
方法二:
import speech_recognition as sr #pyaudio SpeechRecognition模塊
def rec(rate=16000): #從系統麥克風拾取音頻數據,采樣率為 16000
r = sr.Recognizer()
with sr.Microphone(sample_rate=rate) as source:
print("錄音開始") #這里會打印please say something,提示你說話進行錄音
audio = r.listen(source)
with open("recording.wav", "wb") as f: #把采集到的音頻數據以 wav 格式保存在當前目錄下的recording.wav 文件
f.write(audio.get_wav_data())
print('錄音結束')
return 1
rec() #運行rec函數,錄制音頻
import os
os.system('recording.wav')