欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年01月09日 15:07:12   作者:傳奇石頭110  
今天小編就為大家分享一篇python 通過麥克風錄音 生成wav文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
########################################################################
# 
# Copyright (c) 2017 aibot.me, Inc. All Rights Reserved
# 
########################################################################
 
"""
File: gen_wav.py
Date: 2017/03/24 12:36:27
Brief: 通過麥克風錄音 生成 wav文件
"""

import os
import sys
import wave
import numpy as np 
from datetime import datetime
from pyaudio import PyAudio, paInt16



class GenAudio(object):
    def __init__(self):
        self.num_samples = 2000    #pyaudio內(nèi)置緩沖大小
        self.sampling_rate = 8000  #取樣頻率
        self.level = 1500          #聲音保存的閾值
        self.count_num = 20        #count_num個取樣之內(nèi)出現(xiàn)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)     
            # 將讀入的數(shù)據(jù)轉(zhuǎn)換為數(shù)組
            audio_data = np.fromstring(string_audio_data, dtype = np.short)
            #計算大于 level 的取樣的個數(shù)
            large_sample_count = np.sum(audio_data > self.level)
            
            print(np.max(audio_data)),  "large_sample_count=>", large_sample_count

            # 如果個數(shù)大于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 True




if __name__ == "__main__":
    r = GenAudio()
    r.read_audio()
    r.save_wav("./test.wav")

以上這篇python 通過麥克風錄音 生成wav文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)的簡單排列組合算法示例

    Python實現(xiàn)的簡單排列組合算法示例

    這篇文章主要介紹了Python實現(xiàn)的簡單排列組合算法,涉及Python使用itertools庫進行排列組合運算相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • python3安裝OCR識別庫tesserocr過程圖解

    python3安裝OCR識別庫tesserocr過程圖解

    這篇文章主要介紹了python3安裝OCR識別庫tesserocr過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Django Web開發(fā)中django-debug-toolbar的配置以及使用

    Django Web開發(fā)中django-debug-toolbar的配置以及使用

    正在發(fā)愁怎么調(diào)試Django,就遇到了Django Debug Toolbar這個利器。下面這篇文章主要給大家介紹了關(guān)于django web開發(fā)中django-debug-toolbar的配置以及使用的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-05-05
  • python進行參數(shù)傳遞的方法

    python進行參數(shù)傳遞的方法

    在本篇文章里小編給大家分享的是關(guān)于python進行參數(shù)傳遞的方法以及代碼,需要的朋友們可以學習下。
    2020-05-05
  • Python xlrd讀取excel日期類型的2種方法

    Python xlrd讀取excel日期類型的2種方法

    這篇文章主要介紹了Python xlrd讀取excel日期類型的2種方法,本文同時講解了xlrd讀取excel某個單元格的方法,需要的朋友可以參考下
    2015-04-04
  • Pytorch模型轉(zhuǎn)onnx模型實例

    Pytorch模型轉(zhuǎn)onnx模型實例

    今天小編就為大家分享一篇Pytorch模型轉(zhuǎn)onnx模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Anaconda安裝opencv庫詳細圖文教程

    Anaconda安裝opencv庫詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于Anaconda安裝opencv庫詳細圖文教程的相關(guān)資料,安裝Anaconda后,你可以使用conda命令在Anaconda環(huán)境中安裝OpenCV,文中有詳細步驟,需要的朋友可以參考下
    2023-07-07
  • python字符串中匹配數(shù)字的正則表達式

    python字符串中匹配數(shù)字的正則表達式

    正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。這篇文章主要介紹了python字符串中匹配數(shù)字的正則表達式 ,需要的朋友可以參考下
    2019-07-07
  • python繪圖時,坐標軸負號顯示不出來的解決

    python繪圖時,坐標軸負號顯示不出來的解決

    這篇文章主要介紹了python繪圖時,坐標軸負號顯示不出來的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 用實例說明python的*args和**kwargs用法

    用實例說明python的*args和**kwargs用法

    python的*args和**kwargs如何用,看了下面的例子你就清楚了。
    2013-11-11

最新評論