急!!!!如何通过python制作一个简单的录音机,录制自己的声音采用8k采样,16位量化编码,观察其数值?

作者&投稿:翠峰 (若有异议请与网页底部的电邮联系)
对电话音频信号进行数字化,若采样频率为8kHz。。。求过程和答案~

比特数为:8k*8*60
字节数为比特数除以8,即:8k*8*60/8=480k字节

立体声16位44KHZ声音的比特率为:44100*16*2=1411200bps
采样位数可以理解为采集卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实;采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
因此,采集音频时完全可以用一个很大的解析度进行采样,但减少采样次数(降低采样频率),使音频听起来真实,但不流畅自然。而想让一个音频有最好的音质,需要用最高的采样位数,同时使用最大的采样频率,最终会使音频变得非常大。

用例
采样的过程就是抽取某点的采样值,在单位时间中内抽取的点越多,获取得波长信息更丰富,为了复原波形,一个周期中,必须有至少2个点的采样,人耳能感觉到的最低波长为1.7cm,20000Hz,因此要满足人耳的听觉要求,则1s采样至少40000次,用40000Hz(40kHz)表达,这个40kHz就是采样率。常见的CD,采样率为44.1kHz。
以上内容参考:百度百科-音频采样率

#我可以帮你写一段代码,能够录音形成wav文件,不过要分析录音文件的波形,你可以另外找#工具,比如cooledit,也很方便。
from sys import byteorder
from array import array
from struct import pack

import pyaudio
import wave

THRESHOLD = 500
CHUNK_SIZE = 1024
FORMAT = pyaudio.paInt16
RATE = 44100

def is_silent(snd_data):
    "Returns 'True' if below the 'silent' threshold"
    return max(snd_data) < THRESHOLD

def normalize(snd_data):
    "Average the volume out"
    MAXIMUM = 16384
    times = float(MAXIMUM)/max(abs(i) for i in snd_data)

    r = array('h')
    for i in snd_data:
        r.append(int(i*times))
    return r

def trim(snd_data):
    "Trim the blank spots at the start and end"
    def _trim(snd_data):
        snd_started = False
        r = array('h')

        for i in snd_data:
            if not snd_started and abs(i)>THRESHOLD:
                snd_started = True
                r.append(i)

            elif snd_started:
                r.append(i)
        return r

    # Trim to the left
    snd_data = _trim(snd_data)

    # Trim to the right
    snd_data.reverse()
    snd_data = _trim(snd_data)
    snd_data.reverse()
    return snd_data

def add_silence(snd_data, seconds):
    "Add silence to the start and end of 'snd_data' of length 'seconds' (float)"
    r = array('h', [0 for i in xrange(int(seconds*RATE))])
    r.extend(snd_data)
    r.extend([0 for i in xrange(int(seconds*RATE))])
    return r

def record():
    """
    Record a word or words from the microphone and 
    return the data as an array of signed shorts.

    Normalizes the audio, trims silence from the 
    start and end, and pads with 0.5 seconds of 
    blank sound to make sure VLC et al can play 
    it without getting chopped off.
    """
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT, channels=1, rate=RATE,
        input=True, output=True,
        frames_per_buffer=CHUNK_SIZE)

    num_silent = 0
    snd_started = False

    r = array('h')

    while 1:
        # little endian, signed short
        snd_data = array('h', stream.read(CHUNK_SIZE))
        if byteorder == 'big':
            snd_data.byteswap()
        r.extend(snd_data)

        silent = is_silent(snd_data)

        if silent and snd_started:
            num_silent += 1
        elif not silent and not snd_started:
            snd_started = True

        if snd_started and num_silent > 30:
            break

    sample_width = p.get_sample_size(FORMAT)
    stream.stop_stream()
    stream.close()
    p.terminate()

    r = normalize(r)
    r = trim(r)
    r = add_silence(r, 0.5)
    return sample_width, r

def record_to_file(path):
    "Records from the microphone and outputs the resulting data to 'path'"
    sample_width, data = record()
    data = pack('<' + ('h'*len(data)), *data)

    wf = wave.open(path, 'wb')
    wf.setnchannels(1)
    wf.setsampwidth(sample_width)
    wf.setframerate(RATE)
    wf.writeframes(data)
    wf.close()

if __name__ == '__main__':
    print("please speak a word into the microphone")
    record_to_file('demo.wav')
    print("done - result written to demo.wav")


还没有人吗?我也想知道啊~


你好,请问P901怎么通过USB连接电脑?
尊敬的三星用户您好:根据您的描述,建议您如下尝试:1.首先在电脑中安装kies软件,安装kies软件时平板与电脑不能连接。具体下载地址请您访问:http:\/\/www.samsung.com\/cn\/support\/usefulsoftware\/KIES\/JSP2.安装完成后手机连接数据线即可连接电脑,如果无法连接,下拉通知栏,点击已连接为媒体设备,选择...

ps3使用hdmi的连接电视,如何将音频通过功放输出同时视频信号保持1080p...
用音频光纤线连接PS3和音响。然后进PS3的系统设置。音频输出。光纤。按照提示可以很简单的设置好。

PMP中的P、M、B是什么意思?怎么样还能通过?
1P4M就是指五大过程组中有一个过程组是P,有四个是M。但目前改成了A\/T\/B\/N(Above Target高于目标、Target达到目标、Below Target低于目标、Needs Improvement有待提高)四个指标对你的五大过程组进行评级。通过考试与这个成绩是没有绝对关系的,这个成绩不是绝对的分数值,所以是比较模糊的,PMP考试...

电商在线修图兼职-我会ps,有没有一些可以网上兼职ps的平台?
网上兼职可以通过入驻一些威客平台接单像 猪八戒网 、一品威客,这些平台一般是客户先设置好佣金托管到平台。综合性的客户比较多,但接单的也很多因此竞争较大。现在很多影楼、摄影工作室、电商商家会把自己拍摄的照片修图外包。我们就可以通过P114修图网、全影数码、黑光修图等等,找到这些影楼和电商卖家的...

<p> 如何通过旅行社预定一张飞机票,如何操作?应该考虑哪些问题?<\/p>
分析及要点:找一家信誉较好的旅行社,通过电话或者信函和他们联系,告诉你的联系方式,并记下对方联系方式。告诉旅行社你的出发日期、时间、航班、起点和终点、中间停留站、以及舱位等级和一些特殊要求。讲明取票方式,并注意在拿到机票后进行核对,看是否有误。

外贸具体流程
2.如果是放帐的客户,或通过银行D\/P,D\/A等方式收汇等,需经理确认。 3.如果是L\/C付款的客户,通常是在交货期前1个月确认L\/C已经收到,收到L\/C后业务员和单证员应分别审查信用证,检查是否存在错误,交货期能否保障,及其他可能的问题,如有问题应立即请客户改证。

怀孕十四周如何通过 p h 值判断男孩女孩
判断男女,做b超是最可靠的,目前其他的一切方法都有些靠不住。

如何通过eps和pe计算股价?
资料补充:这个公式反映了股市的众生相。股市中的盯盘派、图表派、技术派、炒概念派,都是希望在PE(因为不怎么看eps,所以P就有pe决定)这边找规律,低买高卖。学术界占统治地位、多位诺贝尔奖获得者的理论也是只研究价格、不看公司业绩如何的。姑且不论这么做正确与否,反正我们不太能见到教授或图表...

请问如何将电脑上下载的电影等多媒体复制到三星P5210平板电脑的SD卡上...
尊敬的三星用户您好:根据您的描述,您可以将平板当做U盘连接电脑,传输视频、歌曲、照片等文件使用。具体连接方法如下:1.首先在您的电脑上安装Kies软件,如果您的电脑中未安装Kies软件,有可能会因缺少平板驱动导致无法连接,请点击这里:http:\/\/www.samsung.com\/cn\/support\/usefulsoftware\/KIES\/JSP下载...

为什么我拍的抖音短视频这么模糊?
首先,抖音内部有一个视频码率限制,不得高于6000,一旦超过,系统会自动进行压缩。同时,视频尺寸不得超过1080P,建议从电脑端上传以确保画质不失真。进入高清模式,帧速率需达60帧 要知道,抖音高清视频的标准是60帧,对于剪辑素材,推荐从4K片源下载,虽然文件大,但通过PR导入前,可能需要借助插件如...

门头沟区18085558652: 急!!!!如何通过python制作一个简单的录音机,录制自己的声音采用8k采样,16位量化编码,观察其数值? -
大狐雨华佗: #我可以帮你写一段代码,能够录音形成wav文件,不过要分析录音文件的波形,你可以另外找#工具,比如cooledit,也很方便. from sys import byteorder from array import array from struct import packimport pyaudio import waveTHRESHOLD ...

门头沟区18085558652: 如何通过python3的random模块生成随机颜色
大狐雨华佗: 如何通过python3的random模块生成随机颜色随机颜色的生成在很多行业中很常见,比如UI设计、数据可视化等.Python3中的random模块提供了一种简单且可靠的方法来...

门头沟区18085558652: 用Python语言画一个画面,急!!!!!!!!!!!!! -
大狐雨华佗: 多大的空隙?

门头沟区18085558652: Python制作一个小学生加法准确率计算系统. -
大狐雨华佗: 一般书上的小数加减法后几位小数都可以组成整数,(小数的位数一般也在俩位)或者只有一位小数,但小数位是五,无规律的一般都是一位小数加减. 把小数位先相加,可以组成整数的部分先记着,再相加整数部分最后加上先前记的. 或者你可以直接带进去算,但千万不能忘记不能多加一次.(建议计算好了再用) 验算,如果你想的话可以验算,但是我认为没多大用,一般人算过一遍就不会认真验算了.(得看个人,不能认真对待的就别算了,浪费时间.那些特别认真的可以继续保持)加油!祝你学好小数.

门头沟区18085558652: 急求大神教如何在Python里编写日历 -
大狐雨华佗: 最简单的就是直接调用系统命令cal,比如:import os year = 2014 os.system("cal -y %s" % year)2014January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 1 15 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 ...

门头沟区18085558652: 怎么用PYTHON编辑字典程序 急求 -
大狐雨华佗: #/usr/bin/python if __name__ == '__main__': #read your dict file in a variable d = {'a':'a\'s meaning here', 'b':'xx'} while True: w = raw_input("please input the word: "); if w not in d: print "%s not found" % w else: print "%s: %s" % (w, d[w])

门头沟区18085558652: 如何用python编写一个成绩录入查询 删除功能的系统? 急求 -
大狐雨华佗: 这个并没有什么快捷的方法速成.要不然自己购买一个现有的应用来完成.要不就得自己稳扎稳打的学习Python相关内容.当然,我可以给出一些建议,做Web端的速度更快一些.选择Django框架可以帮你省去很多麻烦,尤其是可以帮你免去很多SQL语句,自带的管理界面已经非常方便,基本可以完成你的录入与删除功能,然后自己再写几个需要的查询方法即可.

门头沟区18085558652: 急求大神教如何在Python里编写日历让三个月在同一排输出 -
大狐雨华佗: 在你输入月份之前加上这句(注意语句缩进):for m in range(1,13): # 这里是你的print,注意:要修改下,print 月份后面加上一个逗号,(加上逗号就不会print回车了) # ....... # 最后加上这句: if m % 3 == 0: print '\n' # 输完三个月份后才回车

门头沟区18085558652: 请高手 帮忙使用 python 写一个小程序· 谢谢了··比较急 -
大狐雨华佗: 数百行代码,写出来也不一定让你满意,没人会帮忙的,起码你应该定个框架,自己用默认的模块把简单的登陆神马的弄好,再来问具体模块怎么实现.(比如选bottle框架,用默认的Cork做登陆,用最简单的sqlite做数据库,你提到了三个类是不是指要用到ORM,如果用ORM你还得研究SQLALCHEMEMY和sqlite的配合,还要设计用户界面也许你会用dojo或jquery,再加上付款用到建行api之类,要考虑太多东西可能要上千行代码...)

门头沟区18085558652: 怎么用Python画加纳国旗 -
大狐雨华佗: # python6.6 import turtledef test():# 加纳共和国国旗呈长方形,长与宽之比为3∶2.# 自上而下由红、黄、绿三个平行相等的横长方形组成,黄色部分中间是一颗黑色五角星.flag_h = 300flag_w = 450star_h = flag_h/3turtle.pensize(2) ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网