截获室友的梦话

来源:互联网 发布:饿了么商家版for mac 编辑:程序博客网 时间:2024/04/18 22:22

http://www.cnblogs.com/mq0036/p/6514894.html

上面这个程序用c#实现的,获取声卡上的语言,判断音量大小,若音量大于阈值,就截取这段语音,主要是调用了封装好的商业dll

我在《用Python做科学计算》这本电子书上找到了一章介绍pyaudio开源库的,而且正好提供了截获语言例子

http://old.sebug.net/paper/books/scipydoc/wave_pyaudio.html#pyaudio

不过例子是python2的,我稍加改动,改成python3版本

from pyaudio import PyAudio, paInt16 import numpy as np from datetime import datetime import wave # 将data中的数据保存到名为filename的WAV文件中def save_wave_file(filename, data):     wf = wave.open(filename, 'wb')     wf.setnchannels(1)     wf.setsampwidth(2)     wf.setframerate(SAMPLING_RATE)    for i in data:        wf.writeframes(i)     wf.close() NUM_SAMPLES = 2000      # pyAudio内部缓存的块的大小SAMPLING_RATE = 8000    # 取样频率LEVEL = 1000           # 声音保存的阈值COUNT_NUM = 20          # NUM_SAMPLES个取样之内出现COUNT_NUM个大于LEVEL的取样则记录声音SAVE_LENGTH = 8         # 声音记录的最小长度:SAVE_LENGTH * NUM_SAMPLES 个取样# 开启声音输入pa = PyAudio() stream = pa.open(format=paInt16, channels=1, rate=SAMPLING_RATE, input=True,                 frames_per_buffer=NUM_SAMPLES) save_count = 0 save_buffer = [] i = 0while True:     # 读入NUM_SAMPLES个取样    string_audio_data = stream.read(NUM_SAMPLES)    # 将读入的数据转换为数组    audio_data = np.fromstring(string_audio_data, dtype=np.short)     # 计算大于LEVEL的取样的个数    large_sample_count = np.sum( audio_data > LEVEL )     print (i, ": ", np.max(audio_data))     # 如果个数大于COUNT_NUM,则至少保存SAVE_LENGTH个块    if large_sample_count > COUNT_NUM:         save_count = SAVE_LENGTH     else:         save_count -= 1     if save_count < 0:         save_count = 0     if save_count > 0:         # 将要保存的数据存放到save_buffer中        save_buffer.append( string_audio_data)     else:         # 将save_buffer中的数据写入WAV文件,WAV文件的文件名是保存的时刻        if len(save_buffer) > 0:            filename = datetime.now().strftime("%Y-%m-%d_%H_%M_%S") + ".wav"            save_wave_file(filename, save_buffer)             save_buffer = []             print (filename, "saved")    i+=1


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 经侦大队不立案怎么办 槐茂酱菜太咸怎么办 法院执法局执法不公怎么办 搞养殖卖不出去怎么办 孔雀吃了蚯蚓该怎么办 多肉幼苗长徒了怎么办 小鸵鸟嘴断了怎么办 武汉早谢怎么办博大直上 威猛先生伤手了怎么办 嗓子眼边条线下边长块肉怎么办 线长在肉里怎么办 北京买车没有号怎么办 租的车处理违章怎么办 以租代购车不要怎么办 订车的合同掉了怎么办 买车合同丢了怎么办 车的证件都丢了怎么办 桃树直立的徒长枝怎么办 月季花长了独枝怎么办? 6岁半B超没子宫怎么办 学生学籍号和身份证号不一致怎么办 学生学籍号和身份证号不一样怎么办 领导交代的任务完不成怎么办 洗衣机里的衣服有味道怎么办 新买的洗衣机有味道怎么办 模拟工业装置没有数据验证怎么办 民办学校的指标生学费怎么办 孩子上初中后成绩不好怎么办 孩子考最后一名怎么办 数学大题不会做怎么办 小学六年级数学考30分怎么办 六年级数学考了30分怎么办 数学考了30分怎么办 没有给直接领导报到怎么办 小学二年级成绩不好怎么办 初中孩子上课注意力不集中怎么办 学生打架家长争吵老师怎么办 我和我老婆感情危机怎么办 数学作业做得慢怎么办 待转弯区变红灯怎么办 大班健康发生火灾怎么办教案