成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 錄制系統(tǒng)聲音的示例

瀏覽:132日期:2022-07-01 16:04:54
環(huán)境準(zhǔn)備

python

wave pyaudio

wave 可以通過(guò)pip直接install,在安裝pyaudio時(shí),通過(guò)正常的pip install 直接安裝一直處于報(bào)錯(cuò)階段,后來(lái)想到可以通過(guò)輪子直接安裝。

在pypi提供的安裝包中有對(duì)應(yīng)的安裝包,注意,不僅僅是python2和python3的區(qū)別,python3的小版本也有點(diǎn)差別??杀叩氖?,小主電腦里裝的是python3.8,后來(lái)想到還有一個(gè)網(wǎng)站可以安裝pythonlibs,找到對(duì)應(yīng)的版本后,下載下來(lái)。直接在文件所在目錄,或者在安裝中指定文件目錄中執(zhí)行安裝

pip install /c/Users/root/Downloads/PyAudio-0.2.11-cp38-cp38-win_amd64.whl代碼和運(yùn)行

def audio_record(out_file, rec_time): CHUNK = 1024 FORMAT = pyaudio.paInt16 # 16bit編碼格式 CHANNELS = 1 # 單聲道 RATE = 16000 # 16000采樣頻率 p = pyaudio.PyAudio() # 創(chuàng)建音頻流 dev_idx = findInternalRecordingDevice(p) stream = p.open(format=FORMAT, # 音頻流wav格式 channels=CHANNELS, # 單聲道 rate=RATE, # 采樣率16000 input=True, input_device_index=dev_idx, # 指定內(nèi)錄設(shè)備的id,可以不寫,使用win的默認(rèn)錄音設(shè)備 frames_per_buffer=CHUNK) print('Start Recording...') frames = [] # 錄制的音頻流 # 錄制音頻數(shù)據(jù) for i in range(0, int(RATE / CHUNK * rec_time)): # 控制錄音時(shí)間 data = stream.read(CHUNK) frames.append(data) # 錄制完成 stream.stop_stream() stream.close() p.terminate() print('Recording Done...') # 保存音頻文件 wf = wave.open(out_file, ’wb’) wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b’’.join(frames)) wf.close()

在使用默認(rèn)錄音設(shè)備時(shí),發(fā)現(xiàn)是話筒錄音,效果并不是太理想,所以就去查查能不能直接錄系統(tǒng)的聲音。

def findInternalRecordingDevice(p): # 要找查的設(shè)備名稱中的關(guān)鍵字 target = ’立體聲混音’ # 逐一查找聲音設(shè)備 for i in range(p.get_device_count()): devInfo = p.get_device_info_by_index(i) print(devInfo) if devInfo[’name’].find(target) >= 0 and devInfo[’hostApi’] == 0: # print(’已找到內(nèi)錄設(shè)備,序號(hào)是 ’,i) return i print(’無(wú)法找到內(nèi)錄設(shè)備!’) return -1

可以使用p.get_device_info_by_index()去查看系統(tǒng)有關(guān)聲音的設(shè)備,通過(guò)設(shè)置為立體聲混音就可以錄制系統(tǒng)聲音。

保存聲音

def save(fileName): # 創(chuàng)建pyAudio對(duì)象 p = pyaudio.PyAudio() # 打開用于保存數(shù)據(jù)的文件 wf = wave.open(fileName, ’wb’) # 設(shè)置音頻參數(shù) wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) # 寫入數(shù)據(jù) wf.writeframes(b’’.join(_frames)) # 關(guān)閉文件 wf.close() # 結(jié)束pyaudio p.terminate()

保存聲音是通過(guò)上述代碼進(jìn)行保存,此處的_frames是個(gè)list,是通過(guò)每錄一個(gè)chunk(數(shù)據(jù)流塊),就把這一塊的數(shù)據(jù)添加進(jìn)去

然后只需要重新創(chuàng)建PyAudio對(duì)象,把這個(gè)list轉(zhuǎn)為字節(jié)串保存到文件中就可以了

問(wèn)題

上述一般可以錄到系統(tǒng)聲音,但在執(zhí)行的時(shí)候發(fā)現(xiàn),并不能。

原因是:win的輸入設(shè)備中沒(méi)有配置立體聲混音

設(shè)置步驟:

在win的聲音調(diào)節(jié)出,右擊打開聲音設(shè)置 找到管理聲音設(shè)備 在輸入設(shè)備處啟用立體聲混音

就此,就完成了錄制系統(tǒng)聲音的需求

注意

上述操作,可以外放,可以插入3.5mm耳機(jī),但系統(tǒng)靜音和tpye-c耳機(jī)插入的時(shí)候不能錄到聲音

完整代碼

import osimport pyaudioimport threadingimport waveimport timefrom datetime import datetime# 需要系統(tǒng)打開立體聲混音# 錄音類class Recorder(): def __init__(self, chunk=1024, channels=2, rate=44100): self.CHUNK = chunk self.FORMAT = pyaudio.paInt16 self.CHANNELS = channels self.RATE = rate self._running = True self._frames = [] # 獲取內(nèi)錄設(shè)備序號(hào),在windows操作系統(tǒng)上測(cè)試通過(guò),hostAPI = 0 表明是MME設(shè)備 def findInternalRecordingDevice(self, p): # 要找查的設(shè)備名稱中的關(guān)鍵字 target = ’立體聲混音’ # 逐一查找聲音設(shè)備 for i in range(p.get_device_count()): devInfo = p.get_device_info_by_index(i) # print(devInfo) if devInfo[’name’].find(target) >= 0 and devInfo[’hostApi’] == 0:# print(’已找到內(nèi)錄設(shè)備,序號(hào)是 ’,i)return i print(’無(wú)法找到內(nèi)錄設(shè)備!’) return -1 # 開始錄音,開啟一個(gè)新線程進(jìn)行錄音操作 def start(self): threading._start_new_thread(self.__record, ()) # 執(zhí)行錄音的線程函數(shù) def __record(self): self._running = True self._frames = [] p = pyaudio.PyAudio() # 查找內(nèi)錄設(shè)備 dev_idx = self.findInternalRecordingDevice(p) if dev_idx < 0: return # 在打開輸入流時(shí)指定輸入設(shè)備 stream = p.open(input_device_index=dev_idx, format=self.FORMAT, channels=self.CHANNELS, rate=self.RATE, input=True, frames_per_buffer=self.CHUNK) # 循環(huán)讀取輸入流 while (self._running): data = stream.read(self.CHUNK) self._frames.append(data) # 停止讀取輸入流 stream.stop_stream() # 關(guān)閉輸入流 stream.close() # 結(jié)束pyaudio p.terminate() return # 停止錄音 def stop(self): self._running = False # 保存到文件 def save(self, fileName): # 創(chuàng)建pyAudio對(duì)象 p = pyaudio.PyAudio() # 打開用于保存數(shù)據(jù)的文件 wf = wave.open(fileName, ’wb’) # 設(shè)置音頻參數(shù) wf.setnchannels(self.CHANNELS) wf.setsampwidth(p.get_sample_size(self.FORMAT)) wf.setframerate(self.RATE) # 寫入數(shù)據(jù) wf.writeframes(b’’.join(self._frames)) # 關(guān)閉文件 wf.close() # 結(jié)束pyaudio p.terminate()if __name__ == '__main__': # 檢測(cè)當(dāng)前目錄下是否有record子目錄 if not os.path.exists(’record’): os.makedirs(’record’) print('npython 錄音機(jī) ....n') print('提示:按 r 鍵并回車 開始錄音n') i = input(’請(qǐng)輸入操作碼:’) if i == ’r’: rec = Recorder() begin = time.time() print('n開始錄音,按 s 鍵并回車 停止錄音,自動(dòng)保存到 record 子目錄n') rec.start() running = True while running: i = input('請(qǐng)輸入操作碼:') if i == ’s’:running = Falseprint('錄音已停止')rec.stop()t = time.time() - beginprint(’錄音時(shí)間為%ds’ % t)# 以當(dāng)前時(shí)間為關(guān)鍵字保存wav文件rec.save('record/rec_' + datetime.now().strftime('%Y-%m-%d_%H-%M-%S') + '.wav')

以上就是python 錄制系統(tǒng)聲音的示例的詳細(xì)內(nèi)容,更多關(guān)于python 錄制系統(tǒng)聲音的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美体内she精高潮| 精品国产99国产精品| 欧美日韩国产一二三| 亚洲成av人影院| 99精品免费视频| 中国av一区二区三区| av电影在线不卡| 日韩欧美一级精品久久| 日本sm残虐另类| 性高湖久久久久久久久| 最新不卡av在线| 国内外成人免费视频| 国产亚洲精品精华液| 99re66热这里只有精品3直播| 日韩欧美国产综合在线一区二区三区| 久久精品72免费观看| 欧美日韩中文字幕一区二区| 精品一区二区三区在线观看国产| 欧美在线视频不卡| 日本aⅴ免费视频一区二区三区| 亚洲全部视频| 亚洲精品乱码久久久久久日本蜜臀| 国内精品视频在线播放 | 久久嫩草精品久久久精品一| av在线播放不卡| 一区二区免费在线| 欧美一区=区| 日韩和的一区二区| 欧美日韩在线电影| 国产一区二区成人久久免费影院 | 亚洲国产精品一区| 一区二区在线观看免费| 亚洲欧洲精品一区| 亚洲国产sm捆绑调教视频| 欧美中日韩免费视频| 天堂资源在线中文精品| 日本福利一区二区| 激情伊人五月天久久综合| 欧美美女一区二区在线观看| 成人av免费网站| 中文字幕在线一区免费| 国产久一道中文一区| 石原莉奈一区二区三区在线观看 | 亚洲精品日韩精品| 亚洲永久免费av| 91高清在线观看| 国产一区免费电影| 精品三级在线观看| 国产精品啊啊啊| 亚洲在线视频网站| 欧美日韩一区精品| 91原创在线视频| 樱桃视频在线观看一区| 色狠狠av一区二区三区| 国产成人av一区二区三区在线观看| 久久免费美女视频| 亚洲三级免费| 五月天国产精品| 日韩午夜在线播放| 国产精品激情| 亚洲线精品一区二区三区八戒| 欧美三级电影精品| 波多野结衣视频一区| 亚洲国产精品二十页| 国产精品免费看| 久草这里只有精品视频| 久久精品欧美日韩| 国产精品永久入口久久久| 蜜臀99久久精品久久久久久软件| 91精品婷婷国产综合久久| 欧美日韩国内| 三级亚洲高清视频| 欧美丰满美乳xxx高潮www| 午夜精品短视频| 日韩中文字幕麻豆| 精品国产自在久精品国产| 1024精品一区二区三区| 日韩高清中文字幕一区| 日韩欧美国产1| 亚洲国产精品综合| 日本欧美加勒比视频| 精品乱人伦小说| 一区二区精品国产| 国产成人精品一区二| 亚洲私人影院在线观看| 欧美日韩国产在线观看| 欧美视频网站| 蜜桃在线一区二区三区| 麻豆视频一区二区| 亚洲国产精品精华液ab| 欧日韩精品视频| 欧美日韩在线精品一区二区三区| 日韩国产欧美一区二区三区| 精品福利视频一区二区三区| 国产视频一区欧美| 成人免费黄色在线| 亚洲国产另类精品专区| 精品国产三级电影在线观看| 国产欧美三级| 欧美日高清视频| 亚洲精品少妇| 成人av在线网站| 婷婷丁香激情综合| 久久精品视频在线免费观看| 色呦呦日韩精品| 黄色精品一区| 国产最新精品免费| 亚洲品质自拍视频| 777午夜精品免费视频| 亚洲乱码视频| 丰满少妇在线播放bd日韩电影| 亚洲444eee在线观看| 久久精品欧美日韩| 欧美色视频在线| 久久精品在线免费观看| 欧美性受xxxx黑人xyx性爽| 一区二区视频在线观看| 国产99精品国产| 偷拍日韩校园综合在线| 懂色av一区二区三区免费看| 天堂午夜影视日韩欧美一区二区| 中文av一区特黄| 91麻豆精品国产91久久久使用方法| 国产精品一区在线观看| 欧美福利一区二区三区| 国产一区二区0| 一区二区三区在线视频免费| 国产日韩欧美a| 欧美亚洲一区二区在线| 亚洲精品美女91| 色综合久久中文综合久久97| 国产麻豆视频一区| 免费在线看一区| 亚洲高清不卡在线观看| 亚洲欧洲精品一区二区精品久久久| 精品免费国产一区二区三区四区| 欧美少妇一区二区| 在线成人欧美| 欧美在线网址| 成人动漫av在线| 激情偷乱视频一区二区三区| 图片区小说区区亚洲影院| 国产精品不卡视频| 精品少妇一区二区三区视频免付费 | 色综合咪咪久久| 成人一道本在线| 国内精品久久久久影院色| 天天综合网 天天综合色| 最新热久久免费视频| 国产日韩欧美精品一区| 久久综合色播五月| 欧美日韩免费一区二区三区| 午夜影院日韩| 伊人蜜桃色噜噜激情综合| 99久久精品费精品国产一区二区| 国产一区二区三区四区五区美女| 日本视频免费一区| 香蕉乱码成人久久天堂爱免费| 亚洲欧美一区二区久久| 国产精品视频线看| 国产欧美精品一区二区三区四区| 精品伦理精品一区| 欧美一级国产精品| 欧美男人的天堂一二区| 日本道在线观看一区二区| 久久午夜精品| 久久精品女人的天堂av| 亚洲自拍高清| 国产精品日韩欧美一区二区三区| 亚洲伦理一区| 99成人免费视频| 亚洲大片在线| 在线视频观看日韩| 国外精品视频| 国产一区自拍视频| 国内成人在线| 黄色亚洲在线| 精品动漫3d一区二区三区免费版| 欧美高清视频一区二区三区在线观看| 色综合一个色综合| 亚洲欧美综合国产精品一区| 欧美精品亚洲精品| 欧美三级视频| 狠狠综合久久| 亚洲国产电影| 国产精品欧美久久| 西西裸体人体做爰大胆久久久| 国产女主播一区二区| 午夜亚洲性色视频| 男女精品网站| 一本色道久久综合狠狠躁的推荐 | 亚洲精品在线免费播放| 久久久久久99久久久精品网站| 国产午夜精品美女毛片视频| 国产精品视频第一区| 亚洲美女在线国产| 五月婷婷综合网| 美女视频黄a大片欧美| 国产一区二区视频在线播放| 成人avav影音|