文本阅读器——Python简单实现

一、功能描述

  • 实现txt文本的自动阅读功能

二、实现流程

1)txt文本准备

  • 将所需要进行语音播放的文本转换为txt文本格式(自行准备或爬取)

2)语音文件生成


(1)安装库 pip install baidu-aip
(2) 调用库并创建客户端 相关信息在应用创建后自行生成

from aip import AipSpeech""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

(3)接口调用(注:合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式)

#txtname 文本文件路径
#savefile 生成的多个音频文件保存目录
# spd   String  语速,取值0-9,默认为5中语速
# pit   String  音调,取值0-9,默认为5中语调
# vol   String  音量,取值0-15,默认为5中音量
# per   String  发音人选择, 0为女声,1为男声, 3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女
def txt2sound(txtname, savefile):""" 你的 APPID AK SK """APP_ID = '你的 App ID'API_KEY = '你的 Api Key'SECRET_KEY = '你的 Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)with open(txtname, 'r') as sub:num = 0while True:text = sub.read(1023)#每次读取1023字节if text:num += 1#调用接口生成音频文件result = client.synthesis(text, 'zh', 1, {'vol': 5, 'per': 4})if not isinstance(result, dict):with open('{}/{}.mp3'.format(savefile, str(num)), 'wb') as f:f.write(result)print('正在合成第'+str(num)+'段文本......')else:break
#执行成功后则在音频文件保存目录中生成MP3音频文件

3)语音文件拼接

  • 将生成的多个mp3格式音频文件拼接为一个wav音频文件

(1) 安装相关库 pip install pydub
(2) 执行代码如下

from pydub import AudioSegment
def joinvoice(savefile, save_name):finally_sound = AudioSegment.empty()#创建一个空音频用于多个音频文件的拼接for i in os.listdir('{}/'.format(savefile)):#遍历音频文件目录进行拼接sound = AudioSegment.from_mp3('auido/{}'.format(i))finally_sound += sound#将拼接完成的音频文件导出,导出格式选用了wav 尝试导出为mp3格式后无法播放文件finally_sound.export(save_name, format="wav")

(3)执行成功后则在对应保存路径下生成合成的wav音频文件(此部分可能报错可查看末尾的报错解决)

4)语音文件播放

  • 播放最终拼接的wa音频文件

(1) 安装相关库 pip install pygame
(2) 执行代码如下:

def play(filename):# frequency频率即播放速度  size=-16音频样本使用的位数,channels=4 1表示单声道,2表示立体声。不支持其他值(负值被视为1,大于2的值被视为2)mixer.init(frequency=16000)mixer.music.load(filename)mixer.music.play()userin = input('输入p停止播放:')if userin == 'p':mixer.music.pause()mixer.music.stop()

5) 完整实现代码

from aip import AipSpeech
from pygame import mixer
import os
from pydub import AudioSegmentdef txt2sound(txtname, savefile):""" 你的 APPID AK SK """APP_ID = '你的 App ID'API_KEY = '你的 Api Key'SECRET_KEY = '你的 Secret Key'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)with open(txtname, 'r') as sub:num = 0while True:text = sub.read(1023)if text:num += 1result = client.synthesis(text, 'zh', 1, {'vol': 5, 'per': 4})if not isinstance(result, dict):with open('{}/{}.mp3'.format(savefile, str(num)), 'wb') as f:f.write(result)print('正在合成第'+str(num)+'段文本......')else:breakdef play(filename):# frequency频率即播放速度  size=-16音频样本使用的位数,channels=4 1表示单声道,2表示立体声。不支持其他值(负值被视为1,大于2的值被视为2)mixer.init(frequency=16000)mixer.music.load(filename)mixer.music.play()userin = input('输入p停止播放:')if userin == 'p':mixer.music.pause()mixer.music.stop()def joinvoice(savefile, save_name):finally_sound = AudioSegment.empty()for i in os.listdir('{}/'.format(savefile)):sound = AudioSegment.from_mp3('auido/{}'.format(i))finally_sound += soundfinally_sound.export(save_name, format="wav")def main():txtname = 'data.txt'savefile = 'auido'result_name = 'resultsound.wav'txt2sound(txtname, savefile)joinvoice(savefile, result_name)play(result_name)if __name__ == '__main__':main()

三、相关报错及解决方式

1.AudioSegment 相关报错解决:
报错:Python AudioSegment winError 2 The system cannot find the file specified(winError2 找不到系统文件)
解决方式:https://www.pianshen.com/article/5739874938/

文本语音阅读器——Python简单实现相关推荐

  1. 基于Android的文本语音朗读器的设计与实现(有声小说APP)

    摘 要 随着时代的发展,越来越多的信息正在产生,人们对信息的获取也越来越重视,从传统的看书到现在的网络,看视频,听广播.多年来,人们获取信息的方式发生了变化.随着人们进入信息时代和网络文学的发展,人们 ...

  2. 我的python语音阅读器

    python语音阅读器 三行代码,可以定制自己的python语音阅读器 ☆程序调试环境☆ python 3.6.6 安卓版(手机) 知识点:androidhelper库 技巧: 无 My python ...

  3. android 语音阅读软件,语音阅读器APP

    语音阅读器APP是一款非常好用的文字转语音阅读软件,不论身在哪里,不论方不方便看文本,该软件都可以帮你转换成语音读给你听,支持文章.小说等等内容的语音,非常方便,需要语音阅读器的可以来西西下载使用! ...

  4. php阅读器开发,微信小程序阅读器的简单实例开发

    这篇文章主要介绍微信小程序阅读器的简单实例开发的相关资料,需要的朋友可以参考下 今天和朋友聊天说到小程序,然后看在看书,然后我们就弄了个小读书的demo,然后现在分享一下. 一.先来上图: 首先先说下 ...

  5. 西瓜直播弹幕阅读器 python

    西瓜直播弹幕阅读器 python 现在已经公布源代码 https://github.com/shuishen49/xiguadanmu 原理如下,输入房间号,打开西瓜直播网页,爬取弹幕. 当然还有比这 ...

  6. Android快速SDK(12)文本pdf阅读器PdfViewer【傻瓜模式】

    代码:http://download.csdn.net/detail/huangbin95487710/9259967 依赖包模式 完整运行还需要用到以下依赖包 Android快速SDK(4)对话框A ...

  7. 新中新a16d二代居民身份证阅读器Python示例

    为什么80%的码农都做不了架构师?>>>    发现酒店.网吧.公家单位好多都是使用的这种蓝色的身份证读取盒子,所以我研究了一下也写个Python示例 网上搜了搜关于这款机器的SDK ...

  8. html5在线语音阅读,使用ResponsiveVoice.js给网页和APP添加文本语音阅读功能

    CSS 语言: CSSSCSS 确定 body { height: 100vh; display: -webkit-box; display: -webkit-flex; display: -ms-f ...

  9. 手机小说语音阅读软件,算省省眼睛把

    偶然在手机上翻到一个能把文本读出来的东西,看小说学英语啥的还挺有用的,   叫语音阅读器百度就能搜到, 算了,发一下,  链接:https://pan.baidu.com/s/1Y1r1e9RiRCZ ...

最新文章

  1. SQL语句中各个部分的执行顺序(转)
  2. mathtype6在word2019中闪退的问题
  3. 数据结构与算法(4)——优先队列和堆
  4. 牛客网 【每日一题】5月11日题目精讲 Moovie Mooving
  5. java jdbc 操作_Java:JDBC操作
  6. git pull和push整理和归纳
  7. 两个摄像头合成一路_教你把一个摄像机添加到两台录像机
  8. quartz SpringMvc 动态定时任务(quartz2.2)
  9. Q91:真实地模拟透明材质(Realistic Transparency)(3)——A Glass of Water
  10. 数学建模 最优化方法:动态规划 学习笔记
  11. 最小的单片机:ATtiny85
  12. 优雅的解决Springboot:BindingException: Invalid bound statement (not found):异常
  13. [日推荐]『车主码』解决临时停车、请人挪车的小麻烦
  14. MongoBD命令大全
  15. spectral clustering谱聚类论文解读(上)
  16. 抓取taobao的IP库
  17. ulimit -u
  18. matlab微分方程求解并仿真
  19. CBAM CBAM: Convolutional Block Attention Module
  20. Hive操作——删除表(drop、truncate)

热门文章

  1. android 简单的exoplayer全景播放器
  2. 阿里云Android直播demo流程
  3. 基于数据kmeans_data分析聚类画图 使用sc轮廓系数作为评价指标
  4. 高德地图自定义定位按钮后搜索周边
  5. cadence软件初识
  6. 《Android开发艺术探索》之Activity的生命周期和启动模式(一)
  7. 转盘抽奖图片html,html转盘抽奖
  8. 安装Win7分区时多了个128Mb的MSR分区
  9. 深度学习中处理类别不平衡问题主流方法总结
  10. ps怎么加底部阴影_PS三分钟之如何在PS中给物体添加阴影