自动断句程序

本程序的最初设计目的是为了实现:

输入一个英语听力对话文件,开始播放,每说一句自动暂停,然后选择下一句还是重复该句,直到播放结束。

源代码如下:

import wave
import numpy
import pylab as pl
from numpy import *
# 打开wav文件
f = wave.open(r"test1.wav", "rb")
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# print(nchannels, sampwidth, framerate, nframes)
str_data = f.readframes(nframes)
f.close()# 将波形数据转换成数组
# 需要根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组
wave_data = numpy.fromstring(str_data, dtype=numpy.short)
wave_data.shape = -1,2
wave_data2=wave_data.T[0]  #此数据即0通道为能量数据
l=len(wave_data2)
# sec = 0.05  #定义单位时间,也是预计停顿间隔时间
# emax= 100   #定义判定能量def point(sec,emax):intl=l%int(sec*44100)wave_data1=delete(wave_data2,arange(l-intl,l+1),0)     #删除掉后面的数据wave_data1.shape = -1,int(sec*44100)                   #形成数据矩阵,列数即每个时间间隔内的数据wave_data1=abs(wave_data1)# times = numpy.arange(0, nframes) * (1.0 / framerate)enemax = amax(wave_data1, axis=1)                       #寻找到每个时间间隔内最大的能量值eneave=sum(wave_data1,axis=1)/len(wave_data1)           #计算每个时间间隔内平均的能量值idx=list(where(enemax-eneave<emax)[0])i=1wr=[[0]]j=0for i in range(len(idx)):                              #如果实际停顿时间远大于预估停顿时间则进行筛选if (int(idx[i])-int(idx[i-1]))<1.5/sec:                  #相邻wr[j].extend([idx[i]])else:wr.append([idx[i]])j=j+1idx=[]for i in range(len(wr)):idx.append(wr[i][int(len(wr[i])/2)])dataload=array(idx)*secdataload=dataload[dataload>33]return dataload

这个函数就是为了解析音频文件,最终输出每个断句的时间点。但会根据输入不同的停顿时间,和停顿时最小能量判定值,会输出不同的结果,故需要进行优化。

判断是否需要断句的条件就是在某个单位时间区间内,声音能量的最大值是否小于某值

a=0.01
pl.subplot(111)
for emax in range(300,1100,100):lll=[]num=[]for seca in range(1,20):datamax=point(float(seca*a),int(emax))lll.append(len(datamax))num.append(len(where(datamax<80)[0]))secv=arange(1,20)*aprint(emax)pl.plot(secv,lll,label=str(emax))
pl.legend(loc='upper left')
pl.grid()
pl.show()

这个就根据不同的输入能量判定值和预计时间间隔,画图,找到最合适的停顿点。(尽可能将停顿点稍多一点并均匀)

from numpy import *
import pygame
import time# file=input("请输入分句记录点文件放入本程序目录,并输入文件名\n")
file=r'data1.txt'
f=open(file)
times=list()
for line in f.readlines():inearr = line.strip()times.append(inearr)
file=r'test1.mp3'i=0
print()
while i != len(times)-1:print('这是第 %s 段音频,共 %s 段音频。' %((i+1),(len(times)-1)))pygame.mixer.init()track = pygame.mixer.music.load(file)pygame.mixer.music.play(0,float(times[i]))time.sleep(float(times[i+1])-float(times[i]))pygame.mixer.music.stop()str=input('键入1进行下一句,其它则重复本句\n')if str == '1' :print('读取下一句')i += 1else: i = i
print('播放结束')

最后就是播放音频的主函数

英语听力自动断句程序相关推荐

  1. 【文献阅读】基于深层语言模型的古汉语知识表示及自动断句研究

    概述:BERT+CRF/CNN实现古文知识表示和断句 2 古汉语自动断句模型 条件随机场是一种经典的序列标注模型,在中文分词.词性标注.命名实体识别等自然语言处理任务中均有着广泛应用 Zheng X, ...

  2. 英语听力挑战微信小程序

    英语听力练习实在是让人想睡觉,有没有什么方法能够让人越练越兴奋,一不注意1个小时就过去了呢?答案当然是有的:使用英语听力挑战微信. 经过自己的经验,经常睡觉前说练练听力,结果一下半个小时就过去了. 非 ...

  3. 英语口语8000句,英语口语mp3,英语听力,一句英语一句翻译,一句英语一句汉语。英语单词 英语翻译 英语跟读 初中英语单词 单词+翻译mp3 单词 音频 mp3 俞敏洪 专四词汇词根 初中英语

    废话不多说,英语口语8000句涵盖了各个场景对白,且有对应的汉语翻译.非常有用.没事听听提高英语水平. 下载地址1:百度盘 提取码:6666 下载地址2:http://www.shicishu.com ...

  4. android 语音自动分句,进行音频断句的自动拆分方法及系统与流程

    本发明涉及语音.字幕处理技术领域,尤其涉及进行音频断句的自动拆分方法及系统. 背景技术: 目前字幕制作领域,主要通过人工进行语音断句,人工语音断句的前提是将语音全部听一遍,在听写的同时通过拍打快捷键来 ...

  5. 学计算机高考英语听力考试时间,北京:2020年高考英语听力机考问答

    1. 英语听力机考安排在什么时候进行?如何报名? 答: 普通高考外语听力实行一年两考, 英语听力第一次考试于2019年12月14日举行,英语听力第二次考试于2020年3月14日举行,均采用计算机考试模 ...

  6. 学计算机高考英语听力考试,北京:2018年高考英语听力机考问答

    1. 英语听力机考安排在什么时候进行?如何报名? 答: 普通高考外语听力实行一年两考, 第一次英语听力考试于2017年12月16日举行,第二次英语听力考试于2018年3月17日举行,均采用计算机考试模 ...

  7. 学计算机高考英语听力考试,高考英语听力机考,常识、实操、备考,你要知道这些...

    原标题:高考英语听力机考,常识.实操.备考,你要知道这些 关于北京高考英语听力考试,从相关政策.考试安排和注意事项,再到备考,你需要知道的,都在这儿啦! 这些基本常识你要知道: 北京高考英语听力考试 ...

  8. 北京英语计算机统考,北京市2019年高考英语听力机考问答

    原标题:北京市2019年高考英语听力机考问答 2019年北京市英语听力机考将在2018年12月15日和2019年3月16日举行! 关于英语听力机考你有以下这些问题吗? 1. 英语听力机考安排在什么时候 ...

  9. 北京市高等教育英语听力计算机考试,北京市2018年高考英语听力机考问答

    1.英语听力机考安排在什么时候进行?如何报名? 答:普通高考外语听力实行一年两考,第一次英语听力考试于2017年12月16日举行,第二次英语听力考试于2018年3月17日举行,均采用计算机考试模式. ...

最新文章

  1. Json字符串转二维数组
  2. 格式化输出和printf命令
  3. 21、Power Query-列文本格式处理
  4. 实践App内存优化:如何有序地做内存分析与优化
  5. Notepad++高亮AS文件
  6. matlab从哪里学,从零开始学MATLAB(附光盘)/从零开始学系列
  7. 谷歌甲骨文十年争夺战!90 亿美元的“Java 第一版权案”终于尘埃落定?
  8. MLT-type渲染算法review(笔记)
  9. Windows 2003中如何启动IIS6的GZIP压缩网页传输(补充)
  10. win7 卸载虚拟机重装提示请您确认有足够的权限安装....
  11. 4、数据表的创建与更新
  12. java8新特性-过滤
  13. php脚本暴力破解网站密码(附php源代码)
  14. 社会主义市场经济的运作机制
  15. 大学计算机专业哪个学校最好,计算机专业:最好的7所大学!也是全中国“最难考”的大学!...
  16. 一条语句查询出所有雇员的编号、姓名、性别、出生日期、电话号码部门名称和本月收入
  17. 使用html2canvas 截图 出现图片空白的问题
  18. SDN之NOS概述——云原生
  19. 计算机在F1的应用,电脑入门,F1到F12有什么用
  20. 边缘计算与算力网络综述

热门文章

  1. 《大唐卫星网络电视》
  2. maven几个plugins
  3. 蒙特卡罗方法采样算法
  4. 云耀服务器 NumPy安装 完整过程
  5. python的ide编辑器_python轻量IDE编辑器 pyscripter 免费开源 更新3.6.3版本
  6. IDEA 报错:Information:java: Errors occurred while compiling module ‘项目名‘
  7. gophish企业内部钓鱼邮件测试
  8. 315成央视盛宴是中国媒体的悲哀
  9. php 计算函数 相加,比较,相除,相减,求余,相乘
  10. 半入耳蓝牙耳机推荐,音质最好的半入耳式蓝牙耳机品牌推荐