最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 通過麥克風(fēng)錄音 生成wav文件的方法

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

如下所示:

#!/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: 通過麥克風(fēng)錄音 生成 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個(gè)取樣之內(nèi)出現(xiàn)COUNT_NUM個(gè)大于LEVEL的取樣則記錄聲音
        self.save_length = 8       #聲音記錄的最小長度:save_length * num_samples 個(gè)取樣
        self.time_count = 8        #錄音時(shí)間,單位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個(gè)取樣
            string_audio_data = stream.read(self.num_samples)     
            # 將讀入的數(shù)據(jù)轉(zhuǎn)換為數(shù)組
            audio_data = np.fromstring(string_audio_data, dtype = np.short)
            #計(jì)算大于 level 的取樣的個(gè)數(shù)
            large_sample_count = np.sum(audio_data > self.level)
            
            print(np.max(audio_data)),  "large_sample_count=>", large_sample_count

            # 如果個(gè)數(shù)大于COUNT_NUM,則至少保存SAVE_LENGTH個(gè)塊
            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 通過麥克風(fēng)錄音 生成wav文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中將正則過濾的內(nèi)容輸出寫入到文件中的實(shí)例

    python中將正則過濾的內(nèi)容輸出寫入到文件中的實(shí)例

    今天小編就為大家分享一篇python中將正則過濾的內(nèi)容輸出寫入到文件中的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python最基本的輸入輸出詳解

    Python最基本的輸入輸出詳解

    這篇文章主要介紹了Python最基本的輸入輸出詳解,文中代基于Python2.x,輸入和輸出是Python學(xué)習(xí)中最基礎(chǔ)的知識(shí),需要的朋友可以參考下
    2015-04-04
  • 在python中使用正則表達(dá)式查找可嵌套字符串組

    在python中使用正則表達(dá)式查找可嵌套字符串組

    這篇文章主要介紹了在python中使用正則表達(dá)式查找可嵌套字符串組的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Python根據(jù)文件后綴實(shí)現(xiàn)文件夾整理

    Python根據(jù)文件后綴實(shí)現(xiàn)文件夾整理

    這篇文章主要為大家詳細(xì)介紹了Python如何根據(jù)文件后綴實(shí)現(xiàn)文件夾整理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的可以參考下
    2024-02-02
  • 簡單談?wù)凱ython中函數(shù)的可變參數(shù)

    簡單談?wù)凱ython中函數(shù)的可變參數(shù)

    和C語言一樣,Python中也有可變參數(shù)函數(shù),即一個(gè)函數(shù)可以接收多個(gè)參數(shù),而這些參數(shù)的個(gè)數(shù)在函數(shù)調(diào)用之前事先是不知道的。下面這篇文章我們來介紹下python中的可變參數(shù)
    2016-09-09
  • PyQt QCombobox設(shè)置行高的方法

    PyQt QCombobox設(shè)置行高的方法

    今天小編就為大家分享一篇PyQt QCombobox設(shè)置行高的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python中快速進(jìn)行多個(gè)字符替換的方法小結(jié)

    python中快速進(jìn)行多個(gè)字符替換的方法小結(jié)

    最近在用python給自己的seo工作提高效率和節(jié)省時(shí)間,發(fā)現(xiàn)python真的很不錯(cuò),可以完成很多事情。多個(gè)字符替換是大家可能都會(huì)遇到的一個(gè)問題,昨天在工作中就碰到了這么一個(gè)問題,所以想著記錄一下解決方案及其過程,方便以后參考。下面來一起看看吧。
    2016-12-12
  • Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)

    Python Pygame實(shí)戰(zhàn)之賽車游戲的實(shí)現(xiàn)

    如今的游戲可謂是層出不窮,不過小編發(fā)現(xiàn),賽車游戲也是深受大家歡迎啊,像跑跑卡丁車、QQ飛車,還有主機(jī)游戲極品飛車系列。本文將用Python中的Pygame模塊制作一個(gè)簡單的賽車游戲,感興趣的可以了解一下
    2022-03-03
  • Python 利用flask搭建一個(gè)共享服務(wù)器的步驟

    Python 利用flask搭建一個(gè)共享服務(wù)器的步驟

    這篇文章主要介紹了Python 利用flask搭建一個(gè)共享服務(wù)器的步驟,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • python 監(jiān)控logcat關(guān)鍵字功能

    python 監(jiān)控logcat關(guān)鍵字功能

    這篇文章主要介紹了python 監(jiān)控logcat關(guān)鍵字功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

吐鲁番市| 丹寨县| 东明县| 永福县| 岐山县| 晋中市| 辉南县| 沂源县| 南丰县| 巴彦淖尔市| 浦县| 佛山市| 辽源市| 东辽县| 阳朔县| 平遥县| 辽源市| 常熟市| 象州县| 昌宁县| 永仁县| 万宁市| 闵行区| 全椒县| 策勒县| 平罗县| 巢湖市| 博乐市| 商南县| 汽车| 江华| 鲁甸县| 靖宇县| 米易县| 阿勒泰市| 兴安盟| 汝南县| 谢通门县| 格尔木市| 宜宾县| 民县|