当前位置: 首页 > news >正文

python语音录音_同时从麦克风录制音频并用python播放

我的目标是通过笔记本电脑麦克风录制我的声音,同时在python中添加一个效果。我需要的是类似的音乐效果踏板,你连接吉他或麦克风,它增加混响,回声或失真等

我正在使用“pyaudio”和“wave”录制和播放音频。使用“scikits.audiolab”将音频作为数组导入,并能够使用反转、剪辑、平铺等功能编辑此数组。通过对音频数组的此操作,我可以向原始音频“添加”效果。

我有一个问题,这不是真正的问题,只是不是我想要的效果。假设我录下了“你好”这个词。我的录制功能设置为录制3秒。然后我将这个音频阵列平铺一次。现在,当我回放时,它会打两次招呼,产生延迟效果。但是,在两个hello之间有一个“空白”的时间间隔,这是因为在我打完招呼之后音频仍在录制。因此,当它重复时,单词之间有太多的空白。我想消除这个空白,以便回放更快地说你好你好。

我的老师推荐穿线。他说我应该记录,同时抓取前500个样本,比如说一个数字。他建议你在录音时把这500个样本放回去。我不太清楚如何实现这一点。

我的问题是,如何同时录制,获取前500个样本,并创建一个新的数组,在原始录制的基础上添加“effect”。import scikits.audiolab as audiolab

import pyaudio

import wave

def recordAudio():

CHUNK = 1024

FORMAT = pyaudio.paInt16

CHANNELS = 1

RATE = 44100

RECORD_SECONDS = 3

WAVE_OUTPUT_FILENAME = "audioOriginal.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,

channels=CHANNELS,

rate=RATE,

input=True,

frames_per_buffer=CHUNK)

print("* recording:")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):

data = stream.read(CHUNK)

frames.append(data)

print("* Finished recording.")

stream.stop_stream()

stream.close()

p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')

wf.setnchannels(CHANNELS)

wf.setsampwidth(p.get_sample_size(FORMAT))

wf.setframerate(RATE)

wf.writeframes(b''.join(frames))

wf.close()

# Duplicate audio and save as Actual

frames, fs, encoder = audiolab.wavread('audioOriginal.wav')

audiolab.wavwrite(frames,'audioActual.wav',fs)

def playAudio():

import pyaudio

import wave

CHUNK = 1024

wf = wave.open('audioActual.wav', 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),

channels=wf.getnchannels(),

rate=wf.getframerate(),

output=True)

data = wf.readframes(CHUNK)

while data != '':

stream.write(data)

data = wf.readframes(CHUNK)

stream.stop_stream()

stream.close()

p.terminate()

def reverseAudio():

frames, fs, encoder = audiolab.wavread('audioActual.wav')

audiolab.wavwrite(frames[::-1],'audioActual.wav',44100)

def revert():

frames, fs, encoder = audiolab.wavread('audioOriginal.wav')

audiolab.wavwrite(frames,'audioActual.wav',fs)

def errorSelection():

print("\nERROR.") # no option in menu

def showMenu():

print("""

1. Record audio

2. Play audio

3. Reverse audio

4. Add delay

5. Revert to original audio

T to end program.

""")

# Menu

def main():

selecciones = {"1": recordAudio, "2": playAudio, "3": reverseAudio, "5": revert}

while True:

showMenu()

seleccion = raw_input(u'What do you want to do? ')

if "t" == seleccion:

return

elif "T" == seleccion:

return

toDo = selecciones.get(seleccion, errorSelection)

toDo()

if __name__ == "__main__":

main()

相关文章:

  • 隐藏自定义列表中的某些栏
  • python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件
  • python去除视频中的logo_视频去水印神器(Easy Video Logo Remover)
  • MOSS 2007基础:内容类型(Content Type)
  • python 第三方包自动导入_Python第三方包的导入
  • SharePoint高级内容--访问群体对象模型的开发之一
  • php soap 两个版本_zabbix-第一章-第三节 LNMP之PHP搭建
  • SharePoint高级内容--访问群体对象模型的开发之二
  • 批量修改的后台代码_如何用WordPress自带的批量编辑功能修改文章分类目录?
  • postman压力测试_如何用Postman做接口自动化测试?
  • 编程访问“我的网站”中的目标链接门户列表
  • 你觉得外观模式和代理模式的联系和区别是什么?_清华毕业大牛带你深入研磨并掌握23种设计模式,总计6.17G...
  • MOSS 2007基础:开发自定义WebPart
  • tp 扫码点餐 源码_外卖点餐扫码点餐系统开发案例
  • MOSS 2007基础:部署自定义WebPart
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • ES6--对象的扩展
  • export和import的用法总结
  • FastReport在线报表设计器工作原理
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Material Design
  • VUE es6技巧写法(持续更新中~~~)
  • Vultr 教程目录
  • 后端_MYSQL
  • 机器学习学习笔记一
  • 机器学习中为什么要做归一化normalization
  • 跨域
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 区块链分支循环
  • 微信小程序:实现悬浮返回和分享按钮
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 原生JS动态加载JS、CSS文件及代码脚本
  • linux 淘宝开源监控工具tsar
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​Linux·i2c驱动架构​
  • ​你们这样子,耽误我的工作进度怎么办?
  • #100天计划# 2013年9月29日
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (52)只出现一次的数字III
  • (6)STL算法之转换
  • (C语言)二分查找 超详细
  • (rabbitmq的高级特性)消息可靠性
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十三)Maven插件解析运行机制
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转载)Linux 多线程条件变量同步
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程