python语音在线编辑-Python:语音处理,实现在线朗读RFC文档或本地文本文件

2023-05-16

本文主要讲解如何使用python来实现将文本转为语音,以一个小例子为例,写了一下用pyTTS来朗读本地方件或在线朗读RFC文档,当然也可以修改一下,做成在线朗读新闻之类的,另本来想实现一个读中文小说的小程序,目前没有发现对中文支持得非常好的,且是免费的语音处理引擎,只能使用TTS实现一个英文的了,就当是用来练习听力了。

1、准备:

b. 下载SpeechSDK51:下载

c. 下载SpeechSDK51 patch,支持中文和日文,本例没有使用,下载。

2、实现:

代码:#!/usr/bin/env python

# -*- coding: utf-8 -*-

#程序说明:此程序实现了通过TTS将文本内容读出来,提供了两种方式,一种是读本地文本文件,

#另一种方式为在线读RFC文档,要属入rfc编号,会将其内容逐行读出来打印到终端,其中音量

#大小,语速,朗读者可能过配置文件来设置,测试了下基本还算清楚,发现免费的TTS引擎对中文

#的支持均不是很好,所以本程序暂时没有处理对中文文件的阅读

import pyTTS

import ConfigParser

def read_local_file(tts):

'''

Function:朗读本地文件

Input:TTS对象

Output: NONE

Author: socrates

Blog:http://blog.csdn.net/dyx1024

Date:2012-02-19

'''

#输入要朗读的文本文件名

file_name = raw_input("please input a text file name (for example: rfc4960.txt)").strip()

try:

fobj = open(file_name, 'r')

except IOError, err:

print('file open error: {0}'.format(err))

return

else:

#逐行输出并朗读的文本内容

for eachLine in fobj:

print(eachLine)

tts.Speak(eachLine)

fobj.close()

def read_online_rfc(tts):

'''

Function:在线朗读RFC文档

Input:TTS对象

Output: NONE

Author: socrates

Blog:http://blog.csdn.net/dyx1024

Date:2012-02-19

'''

import urllib

#输入要朗读的RFC编号

rfc_id = raw_input("please input a rfc number (for example: 4960):")

#打开RCF文档

try:

pager = urllib.urlopen("http://tools.ietf.org/rfc/rfc%s.txt" % rfc_id)

except Exception, err:

print("open url failed, ret = %s" % err.args[0])

return

#逐行读取

while True:

if len(pager.readline()) == 0:

break

else:

strtmp = pager.readline()

print strtmp

tts.Speak(strtmp)

def Init_tts():

'''

Function:初始化TTS引擎

Input:NONE

Output: NONE

Author: socrates

Blog:http://blog.csdn.net/dyx1024

Date:2012-02-19

'''

tts_config = ConfigParser.ConfigParser()

#读取TTS相关配置文件

try:

tts_config.readfp(open('tts_config.ini'))

except ConfigParser.Error:

print 'read tts_config.ini failed.'

#创建TTS对象

tts = pyTTS.Create()

#设置语速

tts.Rate = int(tts_config.get("ttsinfo", "TTS_READ_RATE"))

#设置音量

tts.Volume = int(tts_config.get("ttsinfo", "TTS_READ_VOLUME"))

#设置朗读者

tts.SetVoiceByName(tts_config.get("ttsinfo", "TTS_READ_READER"))

return tts

def show_menu():

'''

Function:系统菜单

Input:NONE

Output: NONE

Author: socrates

Blog:http://blog.csdn.net/dyx1024

Date:2012-02-19

'''

prompt = '''

l. read local file.

2. read rfc online.

3. exit

please input your choice (1 or 2):

'''

command_name = {'1':read_local_file, '2':read_online_rfc}

while True:

while True:

try:

choice = raw_input(prompt).strip()[0]

except (EOFError, KeyboardInterrupt, IndexError):

choice = '3'

if choice not in '123':

print 'error input, try again'

else:

break

if choice == '3':

break

command_name[choice](Init_tts())

if __name__ == '__main__':

show_menu()

配置文件tts_config.ini:

[ttsinfo]

TTS_READ_RATE=-2 ;语速,默认为0,大于0表示快,小于0表示慢

TTS_READ_VOLUME=100 ;音量,0-100之间

TTS_READ_READER=MSMike ;朗读者,取值MSSam、MSMary、MSMike

测试一:

l. read local file.

2. read rfc online.

3. exit

please input your choice (1 or 2):

1

please input a text file name (for example: rfc4960.txt)english.txt

China says it condemns all acts of violence against innocent civilians

BEIJING - China's negative vote on a draft resolution on Syria at the United Nations General Assembly on Thursday was consistent with China's independent foreign policy of peace and in the best interests of the Syrian situation, officials and experts said.

China opposes armed intervention or forcing a so-called regime change in Syria, China's deputy permanent representative to the UN Wang Min said in explanatory remarks.

"We condemn all acts of violence against innocent civilians and urge the government and all political factions of Syria to immediately and fully end all acts of violence, and quickly restore stability and the normal social order," Wang said.

测试二:<>标记对中的内容仅打印,不朗读,各协议文档编号可从http://tools.ietf.org/rfc/中查询。

l. read local file.

2. read rfc online.

3. exit

please input your choice (1 or 2):

2

please input a rfc number (for example: 4960):330

quot;-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

IETF Tools

/* HTML element styles */

background-color: white;

padding: 0;

}

font-family: "Times New Roman", times, serif;

margin: 0;

h1{ font-size: 150%; }

h4{ margin: 0.45em 0 0 0; }

.menu form{ margin: 0; }

input.frugal,textarea.frugal {

border-left: groove 2px #ccc;

此博客上传不了音频文件,有兴趣的朋友可以自己运行一下收听。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python语音在线编辑-Python:语音处理,实现在线朗读RFC文档或本地文本文件 的相关文章

  • VSCode将某个字符替换为换行符,并换行显示

  • WSL1 和 WSL2 从C盘 导入到 D盘

    win10 wsl 从C盘移除 WSL 1导出导入使用 windows Terminal 打开 powershell 标签wsl help 查看支持的子选项命令将wsl 系统打包注销已经导出的wsl导入修改windows terminal
  • 修改mysql字符集为utf8mb4

    设置mysql字符集为utf8mb4 要求MySQL版本 gt 61 5 5 3 查看字符集 查看MYSQL数据库服务器和数据库字符集 方法一 xff1a show variables like 39 character 39 方法二 xf
  • spyder中安装第三方库的包

    最近遇到一个问题 xff1a 在CMD命令窗口安装的python包 xff0c 在anaconda中spyder编辑器中找不到已安装的python包 xff0c 经过网上的资料查看 xff0c 原来是因为 xff0c cmd中python包
  • ubuntu16.04解决wifi被禁用的问题

    点击启用wifi xff0c 可wifi显示被禁用的问题解决 xff1a 1 终端输入命令 xff0c 查看当前wifi开关状态 xff0c 联想电脑会有出现ideapad laptop 影响无线wifi开关的 xff1a rfkill l
  • win10中WSL与Intel Haxm系列模拟器产生冲突

    windows 中的 wsl 基于微软自家的 Hyper V ms WHPX 系虚拟化加速 有些第三方的安卓模拟器 xff0c 基于 Intel 家的 Haxm Intel Haxm 系虚拟化加速 但是 xff0c 一个运行中的系统 xff
  • Windows10安装ubuntu(WSL2,可直接调用Win10程序) —2022年笔记

    算是wsl2的使用总结 一 启动win10虚拟机模块 1 打开控制面板 xff08 或开始 gt 运行 control xff09 2 点击最左边的 启用或关闭windows功能 xff0c 会弹出模块勾选界面 3 勾上 Hyper V 适
  • MySQL分组后取每一组第N条数据

    1 知识点 group concat 函数 聚合函数 1 功能 xff1a 将group by产生的同一个分组中的值连接起来 xff0c 返回一个字符串结果 2 语法 xff1a group concat distinct 要连接的字段 o
  • TDengine的安装使用(超详细)

    TDengine的安装使用 目录 FastBee物联网使用TDengine作为时序数据库 xff0c 蜂信物联官网 xff0c 开源项目演示 xff1a FastBee文档 xff1a 立即开始 TDengine 文档taos的配置参数客户
  • 双系统安装教程(win10 & ubuntu20.04)

    双系统安装教程 xff08 win10 amp ubuntu20 04 xff09 背景创建启动盘win10下磁盘划分开始安装吧我的分区设置启动项 背景 最近公司项目开发需要linux系统 xff08 yocto构建 xff09 xff0c
  • python3.x 快速入门

    Edit the gt 2018 6 15 11 26 53 1认识Python 人生苦短 我用python 优雅 明确 简单 是python设计哲学 python的设计目标之一 是让代码具备高度的可阅读性 python 被广泛用于web程
  • python字符串和列表的切片

    python字符串和列表的切片 前言1 切片字符串例子2 切片语法说明3 列表切片例子演练总结 前言 对于字符串和列表python提供了以 start end step 直观方式来截取字符串和列表一部分 xff0c 使用起来非常便利和直观
  • Debian安装

    欢迎访问爱招飞网站https www isoface cn获取更多物联网产品技术信息 Debian 是一个自由的操作系统 xff08 OS xff09 xff0c 提供您安装在计算机上使用 操作系统就是能让您的计算机工作的一系列基本程序和实
  • Java读取jar包中的resource资源文件

    目录 1 需求 2 问题 3 IDEA读取resource资源 3 1 方法1 3 2 方法2 4 打成jar包后读取resource资源 4 1 读取jar包中的资源文件 4 2 遍历jar包资源目录 4 2 1 环境判断 4 2 2 复
  • 【Excel】排名之成绩并列排名(sumproduct、countif 函数的组合使用方法)

    目录 一 应用场景 解决成绩并列排名 二 sumproduct countif 函数的官方语法说明 三 组合使用的解释 一 应用场景 解决成绩并列排名 在 Excel 的排名中 xff0c 不免会遇到 并列第一 xff0c 并列第X 的情况
  • Kotlin教程 各种View的声明赋值点击事件详解

    本章节讲述Kotlin中各种View的声明赋值点击事件 xff0c 比如TextView xff0c EditText xff0c ImageView 这些在Java语言中是最最基础的东西 写这篇文章的主要目的就是看一下Kotlin语言中有
  • QT连接MYSQL踩过的坑

    1 QT版本需要与mysql版本一致 xff0c 我测试成功的版本都是64位的情况 2 添加引用和链接 include 34 MainWindow h 34 include 34 ui MainWindow h 34 include inc
  • goodnotes导入文件需要密码,教你一招破解!

    很多用goodnotes或者其他ipad软件学习的小伙伴可能会遇到相同的问题 xff0c 就是有的文件在导入的时候会显示需要密码 我自己也是查了很多资料咨询了很多人 xff0c 百度上说的另存为一下有时候管用有时候不管用 最后总结了一下经验
  • 选择排序过程详解

    选择排序过程详解 1 xff0c 引入 和插入排序的插入一样 xff0c 选择更多的是一种思路 xff0c 使用这种思路排序的算法也有多种 xff1a 这篇文章要梳理的是其中最基础的一种 简单选择排序的确足够简单 xff0c 以至于我写完本
  • 在Termux上安装Kali Linux 完整系统

    安装Kali Linux前准备工作 xff1a 1 安装F Droid 开源软件商店 官网 2 使用F Droid商店安装Termux APK 注 xff1a 当然也是可以在play商店里安装Termux 但是可能会出现pkg 更新和安装错

随机推荐