我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python(实操4):录音文件的读取、

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python(实操4):录音文件的读取、

#!/usr/bin/python
# encoding:utf-8
# Filename : processAudio.py
# author by :morespeech
# python2.7
# platform:visual studio code, windows
# topic: practice every day
# detial: process audio

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import wave
import pyaudio
import pylab as pl
import numpy as np


class cProcessAudio:
    def __init__(self):
        pass

# public function
# read file to buffer
    def readWav(self, filename, mode):
        if not os.path.exists(filename):
            return
        else:
            fileHandle = wave.open(filename, mode)
            params = fileHandle.getparams()
            nchannels, sampwidth, samplerate, nsamples = params[:4]
            # read the data
            str_data = fileHandle.readframes(nsamples)
            fileHandle.close()

            wave_data = np.fromstring(str_data, dtype=np.short)
            if params[0] == 2:
                wave_data.shape = -1, 2
                wave_data = wave_data.T
            return wave_data

# write buffer to file, only mono
    def writeWav(self, outfilename, writemode, data, fs, nchannel):
        fileHandle = wave.open(outfilename, writemode)
        fileHandle.setnchannels(nchannel)
        fileHandle.setsampwidth(2)
        fileHandle.setframerate(fs)
        fileHandle.writeframes(data.tostring())
        fileHandle.close()

# record wav
    def recordWav(self, filename, time, fs, nchannel):
        pa = pyaudio.PyAudio()
        save_buffer = ''
        buffer_size = 1000
        stream = pa.open(
            format=pyaudio.paInt16,
            channels=1,
            rate=fs,
            input=True,
            frames_per_buffer=buffer_size)

        read_time_per_second = fs / buffer_size
        cnt = 0
        while cnt < time * read_time_per_second:
            str_data = stream.read(buffer_size)
            save_buffer += str_data
            cnt += 1

        wave_data = np.fromstring(save_buffer, dtype=np.short)
        self.writeWav(filename, "wb", wave_data, fs, nchannel)
        save_buffer = ''

# play wav
    def playWav(self, filename):
        fileHandle = wave.open(filename, "rb")
        p = pyaudio.PyAudio()
        stream = p.open(
            format=p.get_format_from_width(fileHandle.getsampwidth()),
            channels=fileHandle.getnchannels(),
            rate=fileHandle.getframerate(),
            output=True)
        data = fileHandle.readframes(1024)
        while data != '':
            stream.write(data)
            data = fileHandle.readframes(1024)
        stream.close()
        p.terminate()

# plot wav
    def plotWav(self, data, fs, nchannel):
        if 2 == nchannel:
            length = len(data[0])
            time = np.arange(0, length) * (1.0 / fs)
            pl.subplot(211)
            pl.plot(time, data[0])
            pl.subplot(212)
            pl.plot(time, data[1], c="g")
            pl.xlabel("time (seconds)")
            pl.show()
        else:
            length = len(data)
            time = np.arange(0, length) * (1.0 / fs)
            pl.plot(time, data)
            pl.show()


# demo
if __name__ == "__main__":
    data = ''
    data = cProcessAudio().readWav("1.wav", "rb")
    # cProcessAudio().writeWav("new_1.wav", "wb", data, 8000, 1)
    # cProcessAudio().plotWav(data, 8000, 2)
    # cProcessAudio().playWav("1.wav")
    cProcessAudio().recordWav("new_2.wav", 5, 8000, 1)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python(实操4):录音文件的读取、

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python(实操4):录音文件的读取、

#!/usr/bin/python# encoding:utf-8# Filename : processAudio.py# author by :morespeech# python2.7# platform:visual studio
2023-01-31

python怎么读取音频文件

要读取音频文件,你可以使用Python中的音频处理库,如pydub或wave。首先,你需要安装相应的库。你可以使用以下命令来安装pydub和wave库:pip install pydub接下来,你可以使用以下代码来读取音频文件:使用pydu
2023-10-27

Python读取配置文件的实战操作

python代码中配置文件是必不可少的内容,常见的配置文件格式有很多中,ini、yaml、xml、properties、txt、py等,下面这篇文章主要给大家介绍了关于Python读取配置文件的相关资料,需要的朋友可以参考下
2023-05-14

python读取.data文件的实现

本文主要介绍了python读取.data文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-08

用Shell实现逐行读取文件的4种方法

这篇文章主要介绍“用Shell实现逐行读取文件的4种方法”,在日常操作中,相信很多人在用Shell实现逐行读取文件的4种方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用Shell实现逐行读取文件的4种方法
2023-06-09

Python按行读取文件的实现方法【小文件和大文件读取】

本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下: 小文件:#coding=utf-8 #author: walker #date: 2013-12-30 #function: 按行读取小文件 all_lin
2022-06-04

Golang文件读取操作:快速读取大文件的技巧

Golang文件读取操作:快速读取大文件的技巧,需要具体代码示例在Golang程序设计中,文件读取是一个非常常见的操作。但当需要读取大文件时,通常是一件比较耗费时间和资源的操作。因此,如何快速读取大文件是一个非常值得探讨的话题。本文将介绍
Golang文件读取操作:快速读取大文件的技巧
2024-01-19

C++文件读取的4种情况汇总

前几天要用到C++读取文本文件,就学习了一下几种不同的读取方法,下面这篇文章主要给大家介绍了关于C++文件读取的4种情况,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-01-11

Shell逐行读取文件的4种方法

在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法。为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率。方法1:while循环中执行效率最高,最
2022-06-04

Python如何实现文件的读取

这篇文章将为大家详细讲解有关Python如何实现文件的读取,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一·Numpy库中操作文件1.操作csv文件import numpy as npa=np.rando
2023-06-22

python操作xlsx格式文件并读取

之前给大家介绍过python高手之路python处理excel文件(方法汇总) Python操作Excel之xlsx文件 今天继续围绕python xlsx格式文件的操作方法给大家介绍,具体内容如下: 一.准备工作二 .xlrd库读取 首
2022-06-02

读取android根目录下的文件或文件夹实例

最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还要搞,自己的东西还在文档阶段,真的是让人想死啊!! 近半个月来,C#这方面的编码比较多,android和java这里完全搁置了,于是抽空写个小例
2022-06-06

python之文件的读写和文件目录以及文件夹的操作实现代码

为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用内存。举个例子,对文本文件读取:file_object = open('thefile.txt') try: all_th
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录