电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 錄制系統聲音的示例

瀏覽:82日期:2022-07-01 16:04:54
環境準備

python

wave pyaudio

wave 可以通過pip直接install,在安裝pyaudio時,通過正常的pip install 直接安裝一直處于報錯階段,后來想到可以通過輪子直接安裝。

在pypi提供的安裝包中有對應的安裝包,注意,不僅僅是python2和python3的區別,python3的小版本也有點差別。可杯具的是,小主電腦里裝的是python3.8,后來想到還有一個網站可以安裝pythonlibs,找到對應的版本后,下載下來。直接在文件所在目錄,或者在安裝中指定文件目錄中執行安裝

pip install /c/Users/root/Downloads/PyAudio-0.2.11-cp38-cp38-win_amd64.whl代碼和運行

def audio_record(out_file, rec_time): CHUNK = 1024 FORMAT = pyaudio.paInt16 # 16bit編碼格式 CHANNELS = 1 # 單聲道 RATE = 16000 # 16000采樣頻率 p = pyaudio.PyAudio() # 創建音頻流 dev_idx = findInternalRecordingDevice(p) stream = p.open(format=FORMAT, # 音頻流wav格式 channels=CHANNELS, # 單聲道 rate=RATE, # 采樣率16000 input=True, input_device_index=dev_idx, # 指定內錄設備的id,可以不寫,使用win的默認錄音設備 frames_per_buffer=CHUNK) print('Start Recording...') frames = [] # 錄制的音頻流 # 錄制音頻數據 for i in range(0, int(RATE / CHUNK * rec_time)): # 控制錄音時間 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()

在使用默認錄音設備時,發現是話筒錄音,效果并不是太理想,所以就去查查能不能直接錄系統的聲音。

def findInternalRecordingDevice(p): # 要找查的設備名稱中的關鍵字 target = ’立體聲混音’ # 逐一查找聲音設備 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(’已找到內錄設備,序號是 ’,i) return i print(’無法找到內錄設備!’) return -1

可以使用p.get_device_info_by_index()去查看系統有關聲音的設備,通過設置為立體聲混音就可以錄制系統聲音。

保存聲音

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

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

然后只需要重新創建PyAudio對象,把這個list轉為字節串保存到文件中就可以了

問題

上述一般可以錄到系統聲音,但在執行的時候發現,并不能。

原因是:win的輸入設備中沒有配置立體聲混音

設置步驟:

在win的聲音調節出,右擊打開聲音設置 找到管理聲音設備 在輸入設備處啟用立體聲混音

就此,就完成了錄制系統聲音的需求

注意

上述操作,可以外放,可以插入3.5mm耳機,但系統靜音和tpye-c耳機插入的時候不能錄到聲音

完整代碼

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

以上就是python 錄制系統聲音的示例的詳細內容,更多關于python 錄制系統聲音的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 营养师网,营养师考试时间,报名入口—网站首页 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 纸箱网 -纸箱机械|设备|包装纸盒|包装印刷行业门户网站 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 联系我们-腾龙公司上分客服微信19116098882 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 一路商机网-品牌招商加盟优选平台-加盟店排行榜平台 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 大米加工设备|大米加工机械|碾米成套设备|大米加工成套设备-河南成立粮油机械有限公司 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 |