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

【正点原子i.MX93开发板试用连载体验】录音小程序采集语料

 本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)

接下来就是要尝试训练中文提示词。首先要进行语料采集,这是一个比较耗费人力的事情,通常大公司会有有专人进行语料收集,我只好自己亲自做。这里参考了AliOS Things里面提供的一个录音工具,方便快速录音。对这个工具做了一点修改,原来的代码只能在Linux下运行,现在改成在Windows下也能运行。

import pyaudio
import wave
import random
import time
import os
from IPython import display
#from pydub import AudioSebment
#from pydub.playback import play
#from playsound import playsound
CHUNK = 2
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
SAMPLEWIDTH = 2
RECORD_SECONDS = 1
FILE_FORMAT = '.wav'
RECODER_NAME = 'lk'
#play stream
def play_wav(name, pyaudio):f = wave.open(name,"rb")  #open stream  play_stream = pyaudio.open(format = p.get_format_from_width(f.getsampwidth()),  channels = f.getnchannels(),  rate = f.getframerate(),  output = True)  #read data  data = f.readframes(CHUNK)while data:  play_stream.write(data)data = f.readframes(CHUNK)#stop streamplay_stream.stop_stream()  play_stream.close()  #close PyAudio  
#    pyaudio.terminate()f.close()
def save_wav(name, frames):wf = wave.open(name, 'wb')wf.setnchannels(CHANNELS)wf.setsampwidth(p.get_sample_size(FORMAT))wf.setframerate(RATE)wf.writeframes(b''.join(frames))wf.close()  
def record_wav(duration):time.sleep(0.2) # 1sec, 0.1secprint("开始录音,请说话......")
#    count = 3
#    for i in range(3):
#        time.sleep(0.2) # 1sec, 0.1sec
#        count -= 1
#        print(count)frames = []stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK)for i in range(0, int(RATE * duration / SAMPLEWIDTH)):data = stream.read(CHUNK, exception_on_overflow = False)frames.append(data)#count = 0#while count < int(RECORD_SECONDS * RATE):#    data = stream.read(CHUNK)#    frames.append(data)#     count += CHUNKstream.stop_stream()stream.close()print("录音结束!")return frames
# main function
if __name__ == '__main__':p = pyaudio.PyAudio()# input('请按回车键开始录制!\n')# record filescount = 0for i in range(250):input('请按回车键开始录制!\n')print("开始第%d录制!" % count)hash_name = str(hex(abs(hash(RECODER_NAME + str(random.random()))) % 1000000000)).replace('0x','') \+ '_nohash_' + str(count) + FILE_FORMATrframes = record_wav(1) # record 1 secsave_wav(hash_name, rframes)#time.sleep(0.5) # 1sec, 0.1secprint("录音回放开始!\n")play_wav(hash_name, p)print("录音回放结束!\n")value = input("按‘回车’保存,放弃本条请按‘其他’键并回车!\n")if (value == ''):count += 1print("保存录音成功!")else:os.remove(hash_name)print("已删除本条录音!")#display.display(display.Audio(hash_name, rate=16000))#wav = AudioSegment.from_wav(hash_name)#play(wav)p.terminate()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++客户端Qt开发——常用控件(多元素控件)
  • 数据库管理1
  • 【Linux】centos7安装PHP7.4报错:libzip版本过低
  • 计算机网络入门
  • Ubuntu 磁盘扩容
  • PHP全功能微信投票迷你平台系统小程序源码
  • [web]-图片上传、文件包含-图片上传
  • GNSS技术干货(34):天灵灵 地灵灵 不如C/N0灵
  • Python酷库之旅-第三方库Pandas(026)
  • C++ --> 类和对象(二)
  • Mysql:解决CPU飙升至100%问题的系统诊断与优化策略
  • 深度学习中激活函数的演变与应用:一个综述
  • 解决RuntimeError: Couldn‘t load custom C++ ops. This can happen if your PyTorch
  • [BJDCTF2020]EzPHP1
  • React@16.x(56)Redux@4.x(5)- 实现 createStore
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Akka系列(七):Actor持久化之Akka persistence
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Java比较器对数组,集合排序
  • java第三方包学习之lombok
  • JS实现简单的MVC模式开发小游戏
  • mac修复ab及siege安装
  • maya建模与骨骼动画快速实现人工鱼
  • QQ浏览器x5内核的兼容性问题
  • RxJS: 简单入门
  • 扑朔迷离的属性和特性【彻底弄清】
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 我的zsh配置, 2019最新方案
  • 怎么将电脑中的声音录制成WAV格式
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • Java数据解析之JSON
  • #HarmonyOS:基础语法
  • (1) caustics\
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4)事件处理——(7)简单事件(Simple events)
  • (55)MOS管专题--->(10)MOS管的封装
  • (补充)IDEA项目结构
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm高校实验室 毕业设计 800008
  • (回溯) LeetCode 40. 组合总和II
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (五)c52学习之旅-静态数码管
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .CSS-hover 的解释
  • .form文件_SSM框架文件上传篇
  • .NET 常见的偏门问题
  • .Net 高效开发之不可错过的实用工具
  • .net网站发布-允许更新此预编译站点
  • /bin/bash^M: bad interpreter: No such file or directory
  • @EventListener注解使用说明