dome 模块 pyaudio 声音处理

为语音识别准备

直接上例子

dome1 声音强度检查

import pyaudio
import numpy as np class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def close(self):
self.stream.close()
self.paudio.terminate() def main():
a = QAudio()
a.open()
print("开始聆听...")
while True:
data = a.read()
audio_data = np.fromstring(data, dtype=np.short)
temp = np.max(audio_data)
print(f'当前声音强度值: {"*"*(temp//100)}') if __name__ == '__main__':
main()

dome2 录音_播放_写到文件

import pyaudio
import wave class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def read_s(self, time=1):
data = []
for _ in range(self.RATE//self.CHUNK*time):
data.append(self.stream.read(self.CHUNK)) return data def close(self):
self.stream.close()
self.paudio.terminate() def save(self, filename='tmp.wav', data=[]):
wf = wave.open(filename, "wb")
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(2)
wf.setframerate(self.RATE)
wf.writeframes(b"".join(data))
wf.close() def play(self, path="tmp.wav"):
# 定义数据流块
chunk = 1024
# 只读方式打开wav文件
f = wave.open(path, "rb")
# 打开数据流
fstream = self.paudio.open(format=self.paudio.get_format_from_width(f.getsampwidth()),
channels=f.getnchannels(),
rate=f.getframerate(),
output=True)
# 读取数据
data = f.readframes(chunk)
# 播放
while data:
fstream.write(data)
data = f.readframes(chunk)
# 停止数据流
fstream.stop_stream()
fstream.close() def main():
a = QAudio()
a.open() print('开始录音')
data = a.read_s(10)
print('保存录音')
a.save(data=data)
print('播放声音')
a.play()
a.close() if __name__ == '__main__':
main()

dome3 自动断句录音,你说啥我说啥

为语音识别准备

import pyaudio
import wave
import numpy as np class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def read_s(self, time=1.0):
data = []
for _ in range(int(self.RATE//self.CHUNK*time)):
data.append(self.stream.read(self.CHUNK)) return data def close(self):
self.stream.close()
self.paudio.terminate() def save(self, filename='tmp.wav', data=[]):
wf = wave.open(filename, "wb")
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(2)
wf.setframerate(self.RATE)
wf.writeframes(b"".join(data))
wf.close() def play(self, path="tmp.wav"):
# 定义数据流块
chunk = 1024
# 只读方式打开wav文件
f = wave.open(path, "rb")
# 打开数据流
fstream = self.paudio.open(format=self.paudio.get_format_from_width(f.getsampwidth()),
channels=f.getnchannels(),
rate=f.getframerate(),
output=True)
# 读取数据
data = f.readframes(chunk)
# 播放
while data:
fstream.write(data)
data = f.readframes(chunk)
# 停止数据流
fstream.stop_stream()
fstream.close() def read_auto(self): self.read_s(0.1) # 先取0.1s,清一下buf
while True:
data = []
flag = None
count = 1
while True:
result = self.read()
audio_data = np.fromstring(result, dtype=np.short)
# audio_data = np.array(result)
temp = np.max(audio_data)
print(f'当前声音强度值: {"*" * (temp // 100)}')
if temp < 400:
if flag:
count -= 1
if count < 0:
break
continue
else:
flag = True
data.append(result)
print(len(data))
if len(data) > (self.RATE//self.CHUNK)//3:
break return data def main():
a = QAudio()
a.open()
while True:
print('开始录音')
data = a.read_auto()
print('保存录音')
a.save(data=data)
print('播放声音')
a.play() # 清空buff 避免噪音回响
a.read_s(len(data)//(a.RATE//a.CHUNK)+0.5) if __name__ == '__main__':
main()

dome 模块 pyaudio 声音处理 为语音识别准备的更多相关文章

  1. Unity 声音处理 之 语音识别

    音量检测 检测当前麦克风的输入音量 using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...

  2. 基于语音识别、音文同步、图像OCR的字幕解决方案HtwMedia介绍

    背景介绍 俗话说,“好记性不如乱笔头”,这充分说明了文字归档的重要性.如今随着微信.抖音等移动端app的使用越来越广,人们生产音.视频内容也越来越便捷.而相比语音和视频而言,文字具有易存档.易检索.易 ...

  3. 关于编码和解码问题——encode、decode

            一.背景和问题 近期在做一个关于声卡录音的项目,开发环境是win10 64位家庭中文版,pycharm2019.1,python3.6(Anaconda3),python模块pyaud ...

  4. webrtc中APM(AudioProcessing module)的使用

    一,实例化和配置 AudioProcessing* apm = AudioProcessing::Create(0); //这里的0指的是channelID,只是一个标注那个通道的表示 apm-> ...

  5. AngularJs angular.injector、angular.module

    angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...

  6. webrtc--AudioProcessing的使用

    1.AudioProcessing的实例化和配置: AudioProcessing* apm = AudioProcessing::Create(0); apm->level_estimator ...

  7. LINUX下 Udev详解

    如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...

  8. 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建

          作者今天开始正式开始学习Cocos2d-X引擎进行游戏编程,预计两天会更新一期,最后实现ios游戏的appsore上线. (部分内容转载自:http://blog.csdn.net/yan ...

  9. 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建

    本文使用的是cocos2d-x-2.1.4版本 ,截至目前为止是最新稳定版 所谓的开发环境就是制作游戏的地方,打个比方读者就会十分清楚了.比如提到做饭,人们都会想到厨房.这是 因为厨房有炉灶.烟机.水 ...

随机推荐

  1. 从零开始打造 Mock 平台 - 核心篇

    前言 最近一直在捣鼓毕设,准备做的是一个基于前后端开发的Mock平台,前期花了很多时间完成了功能模块的交互.现在进度推到如何设计核心功能,也就是Mock数据的解析. 根据之前的需求设定加上一些思考,用 ...

  2. Echarts 自定义legend图片,修改点击之后的颜色图解

    第一个问题:echarts 可以自定义图例的图标,百度上很多回答都是引用的相对路径,但是不知道为啥,我的vue项目就是引用不显示,在network里面找不到相应图片 后来我想了个法子,就是先获取到这个 ...

  3. 「从零单排HBase 05」核心特性region split

    HBase拥有出色的扩展性,其中最依赖的就是region的自动split机制. 1.split触发时机与策略 前面我们已经知道了,数据写入过程中,需要先写memstore,然后memstore满了以后 ...

  4. JDk下载和环境变量Path的配置

    JDK下载与安装 下载地址 打开该网址会显示如下图,点击DOWMLOAD即可: 出现该页面时,点击接受: 选择对应的安装包下载即可(本人用的是Windows64位): 注:如果您无法确定您的windo ...

  5. fastdfs的入门到精通(引言和单机安装)

    引言: FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服 ...

  6. 03-Vue数据请求

    1. vue-resource vue-resource jsonp请求 <body> <div id="app"> <!-- v-model 监听表 ...

  7. 使用vue构建一个可视化大数据平台

    使用vue全家桶以及v-charts和datav实现一个github可视化大数据界面展示,没有设计搞的原因,只能忽略设计编写一下界面, 用户只需要登录的时候填写自己github用户名.就可以看到数据展 ...

  8. Python第一周作业

    import turtle turtle.color('black','red') turtle.pensize(10) turtle.begin_fill() for i in range(5): ...

  9. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (下篇)

    前言 回顾上一篇文章<使用Swagger做Api文档 >,文中介绍了在.net core 3.1中,利用Swagger轻量级框架,如何引入程序包,配置服务,注册中间件,一步一步的实现,最终 ...

  10. Spring框架——IOC 工厂方法

    IoC 是典型的⼯厂模式,如何使⽤用⼯厂模式创建 bean, IoC 通过⼯厂模式创建 bean 有以下两种⽅式 xml <?xml version="1.0" encodi ...