前言:

这是一篇简单的Python文字(汉字)转语音教程,当然对于其他语言工具在实现的方法上也是一样的 。

在自然语言处理上,文字、音频互转是一个很关键的技术点。对于语音转文字,个人实现较为困难,我们可以使用语音转文字的软件或借助各API(如科大讯飞等)进行移植开发。不过文字转语音就相对而言容易实现很多了。

汉字转语音实现就分为两步,第一步将汉字转为拼音,第二步通过拼音调用相匹配的音频文件。下面是具体的开发实例教程。

开发环境:Windows

Python版本:3.x

外置模块准备:pygame(可直接在cmd命令行中pip install pygame安装)

汉字转拼音

我使用的是将汉字转为Unicode码,然后通过查询一个匹配文件(我使用的是unicode_py.txt)获取该汉字的拼音,该文件中列有从4E00-9FA5标准汉字的Unicode编码所对应的拼音,外加一个落单的3007编码的“〇”。

文件如下:

在大写拼音英文后的1,2,3,4,5分别表示一,二,三,四和轻声(注意到存在有多音字)

我们将其封装成一个函数,参数为一个全是汉字的字符串,返回是一个拼音字符串。(即chinese_to_pinyin("秋水共长天一色") 返回的是"QIU1 SHUI3 GONG4 CHANG2 TIAN1 YI1 SE4 ")

源码如下:

def chinese_to_pinyin(x):y = ''dic = {}with open("unicode_py.txt") as f:for i in f.readlines():dic[i.split()[0]] = i.split()[1]for i in x:i = str(i.encode('unicode_escape'))[-5:-1].upper()try:y += dic[i] + ' 'except:y += 'XXXX ' #非法字符我们用XXXX代替return y

说明:将该文件与"unicode_py.txt"文件放在同一目录下,代码比较简陋,因为主要给大家讲实现教学,所以没有对多音字进行处理(所以默认使用第一个使用频率最高的音)

拼音转语音

这一步也比较简单,我们根据拼音调用相对应的单个音的音频文件即可。单个音的音频文件可以自己录或找人录,渠道有很多哦。注意文件格式,最好是mp3或wav文件。

部分文件展示如下:

我们将其置入一个voice文件夹下。准备工作就做好了。

我们同样将汉字转语音封装成一个make_voice函数,参数为一个汉字字符串,然后调用chinese_to_pinyin函数,返回值不重要,可为空,功能实现是调用音频文件发音。

源码如下:

import pygame
def make_voice(x):pygame.mixer.init()voi = chinese_to_pinyin(x).split()for i in voi:if i == 'XXXX':  #处理'XXXX'的音,可将其忽略continuepygame.mixer.music.load("voice/" + i + ".mp3")pygame.mixer.music.play()while pygame.mixer.music.get_busy() == True:passreturn None

我们展示一下这个教学版的最后完整的代码图(该文件名为"test.py"):

import pygamedef chinese_to_pinyin(x):y = ''dic = {}with open("unicode_py.txt") as f:for i in f.readlines():dic[i.split()[0]] = i.split()[1]for i in x:i = str(i.encode('unicode_escape'))[-5:-1].upper()try:y += dic[i] + ' 'except:y += 'XXXX 'return ydef make_voice(x):pygame.mixer.init()voi = chinese_to_pinyin(x).split()for i in voi:if i == 'XXXX':continuepygame.mixer.music.load("voice/" + i + ".mp3")pygame.mixer.music.play()while pygame.mixer.music.get_busy() == True:passreturn Nonewhile True:p = input("请输入文字:")make_voice(p)

教程文件的目录结构:

test.py
unicode_py.txt
voice----A1.mp3A2.mp3A3.mp3...

实现原理就是这样,同时也可以视一些具体情况做一些拓展,例如将阿拉伯数字转汉字读法(即1234006.15读作“一百二十三万四千零六点一五”,这个实现不难),还有将多音字问题攻破也是很棒的。

当然只要想法够丰富用pygame的音频功能也能实现很多有趣的功能(如播放器制作或电子音乐简单创作等)。

结尾:

以上就是本文的全部内容了,大家喜欢的记得点点赞!

最后完整代码已经打包整理好了,有需要的小伙伴,可以点击这行字体,要么私信小编!

手把手教你实现——Python文字(汉字)转语音教程,举一反三~相关推荐

  1. 手把手教你用Python构建自己的「王二狗」

    题图 | 智能二狗聊天机器人 导读 在人手N部智能手机的时代,我们对聊天机器人早已不陌生.这两年很火的游戏群聊天机器人「王二狗」更是用它的机智幽默征服了很多人. 今天,我们将手把手教你用Python从 ...

  2. 亲测,手把手教你用Python抢票

    亲测,手把手教你用Python抢票 原创 2015-12-10 大数据文摘 大数据文摘 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名 ...

  3. 用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!

    原标题:手把手教你用 Python 绘制酷炫的桑基图! 作者 | 周志鹏 责编 | 郭 芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看! ...

  4. python自助电影售票机_手把手教你用python抢票回家过年(代码简单)

    首先看看如何快速查看剩余火车票? 当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就 ...

  5. 元宵节就要到了,手把手教你用Python打造一款3D花灯

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 独有宦游人,偏惊物候新. 1 前言 ...

  6. 垃圾邮件过滤python_手把手教你用 python 和 scikit-learn 实现垃圾邮件过滤

    原标题:手把手教你用 python 和 scikit-learn 实现垃圾邮件过滤 雷锋网按:本文原文来自一篇国外大神的,由雷锋网字幕组 彭艳蕾.林立宏 两位组员共同编译完成,转载请注明出处. 文本挖 ...

  7. 手把手教你使用Python获取B站视频并在本地实现弹幕播放功能

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 少小虽非投笔吏,论功还欲请长缨. ...

  8. 手把手教你用python抢票_又没抢到票?手把手教你用python抢票回家过年…

    原标题:又没抢到票?手把手教你用python抢票回家过年- 最近朋友圈刷屏:我又没抢到票!哭! 憋急,教程在此,有人愿意尝试吗? 先看看如何快速查看剩余火车票? 作者 protream 原文:http ...

  9. 手把手教你入门Python爬虫(二)

    手把手教你入门Python爬虫 前言   在上一篇文章中,我们讲解到了基础的计算机网络知识,并完成了"爬取豆瓣Top250电影信息"的项目.那么这一次,作者将带领大家完成" ...

  10. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

最新文章

  1. BZOJ3233【AHOI2013】找硬币
  2. CSS对 网页进行布局
  3. TensorFlow学习笔记之一(TensorFlow基本介绍)
  4. ElasticSearch聚合语法学习(bucket,metric,hitogram,date hitogram)
  5. poj1201/zoj1508/hdu1384 Intervals(差分约束)
  6. .net core + headless chrome实现动态网页爬虫
  7. 用php写的亲亲鲜花网站_php54鲜花销售网站
  8. 判断页面打开的浏览器信息
  9. 【数组】牛客网:调整数组顺序使奇数位于偶数前面(一)
  10. PCM(Pulse-code modulation)脉冲编码调制
  11. linux mount挂载
  12. 字体引入/字体抽离/字体压缩
  13. 记一次用jspdf和html2canvas导出pdf分页处理
  14. 当前计算机技术在制图,计算机技术在《机械制图》课程中的应用
  15. 西湖论剑 easyCpp writeup
  16. 如何让梯形变成平行四边形_把梯形转化成平行四边形.ppt
  17. MVVM和MCV模式
  18. MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)
  19. 《使命召唤》官方秘籍
  20. 三颗锦囊用完,苹果新iPad今年挡得住两大集团军吗?

热门文章

  1. 宏碁e5-572g重装linux,Acer-E5-572G笔记本U盘装原版win10系统教程
  2. firefox 邮箱分类过滤
  3. 使用Python和MySQL实现网上购物管理系统
  4. 如何对CAD中的曲线进行测量?
  5. 移动wifi宝显示无服务器,优游宝4G随身WiFi解决方案 云SIM技术无需插卡
  6. Eucalyptus云平台搭建
  7. IIC协议简介—学习笔记
  8. Lintcode 尾部的零
  9. 51单片机汇编程序,温度报警项目
  10. 【DIY小记】Win10编程字体主题设置全攻略