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

首頁 > 編程 > Python > 正文

python 通過麥克風錄音 生成wav文件的方法

2020-02-16 00:34:20
字體:
來源:轉載
供稿:網友

如下所示:

#!/usr/bin/env python# -*- coding: utf-8 -*-######################################################################### # Copyright (c) 2017 aibot.me, Inc. All Rights Reserved# ######################################################################## """File: gen_wav.pyDate: 2017/03/24 12:36:27Brief: 通過麥克風錄音 生成 wav文件"""import osimport sysimport waveimport numpy as np from datetime import datetimefrom pyaudio import PyAudio, paInt16class GenAudio(object):    def __init__(self):        self.num_samples = 2000    #pyaudio內置緩沖大小        self.sampling_rate = 8000  #取樣頻率        self.level = 1500          #聲音保存的閾值        self.count_num = 20        #count_num個取樣之內出現COUNT_NUM個大于LEVEL的取樣則記錄聲音        self.save_length = 8       #聲音記錄的最小長度:save_length * num_samples 個取樣        self.time_count = 8        #錄音時間,單位s        self.voice_string = []        #保存文件    def save_wav(self, filename):        wf = wave.open(filename, 'wb')         wf.setnchannels(1)         wf.setsampwidth(2)         wf.setframerate(self.sampling_rate)         wf.writeframes(np.array(self.voice_string).tostring())        wf.close()            def read_audio(self):        pa = PyAudio()         stream = pa.open(format=paInt16, channels=1, rate=self.sampling_rate, input=True,                 frames_per_buffer=self.num_samples)                 save_count = 0        save_buffer = []         time_count = self.time_count        while True:            time_count -= 1                        # 讀入num_samples個取樣            string_audio_data = stream.read(self.num_samples)                 # 將讀入的數據轉換為數組            audio_data = np.fromstring(string_audio_data, dtype = np.short)            #計算大于 level 的取樣的個數            large_sample_count = np.sum(audio_data > self.level)                        print(np.max(audio_data)),  "large_sample_count=>", large_sample_count            # 如果個數大于COUNT_NUM,則至少保存SAVE_LENGTH個塊            if large_sample_count > self.count_num:                save_count = self.save_length            else:                 save_count -= 1            if save_count < 0:                save_count = 0                        if save_count > 0:                save_buffer.append(string_audio_data)            else:                if len(save_buffer) > 0:                    self.voice_string = save_buffer                    save_buffer = []                     print("Recode a piece of  voice successfully!")                    return True                        if time_count == 0:                 if len(save_buffer) > 0:                    self.voice_string = save_buffer                    save_buffer = []                    print("Recode a piece of  voice successfully!")                    return True                else:                    return False        return Trueif __name__ == "__main__":    r = GenAudio()    r.read_audio()    r.save_wav("./test.wav")            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黎平县| 聊城市| 余江县| 百色市| 云和县| 东乌珠穆沁旗| 蓬莱市| 广南县| 霍山县| 鲁山县| 马山县| 长沙市| 台东县| 中宁县| 康定县| 长沙县| 任丘市| 富蕴县| 石河子市| 渭南市| 进贤县| 余江县| 梁河县| 延吉市| 阜南县| 勐海县| 东乡族自治县| 和顺县| 磐安县| 自治县| 弋阳县| 沁水县| 丹凤县| 泸西县| 钦州市| 扎兰屯市| 游戏| 高平市| 龙井市| 进贤县| 青阳县|