中文编程专栏: zhuanlan.zhihu.com/codeInChinese
1 人赞同了该文章
首先, 利用第三方库获取中文字符对应拼音(https://github.com/program-in-chinese/study/blob/master/1-%E5%9F%BA%E7%A1%80/wav%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86/%E5%90%88%E6%88%90.py):
fromxpinyinimportPinyin...for单字in文字:# TODO: 多系统/拼音=拼音库.get_pinyin(单字,tone_marks='numbers')格式信息=从wav文件读取信息("单字/"+拼音+".wav")
然后将wav文件改为拼音命名, 比如"中.wav"改为"zhong1.wav", 顺手将单字("我是中国人"五个字)的wav文件裁剪为0.35秒左右, 减少了前后空白, 拼接起来效果听起来好一些.
下面需要整理一份拼音全表. 用了网上下载的一个xls表, 格式如下:
输出所有存在的拼音, 比如a, 包括入声和四声都有, 则输出 a0, a1, a2, a3, a4; 如bu, 则输出bu1, bu3, bu4
同样用Python处理xlsx表格, 之前好像没有贴过类似代码. 节选如下(完整代码见:https://github.com/program-in-chinese/study/blob/master/2.1-topic%EF%BC%9A%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/%E6%8B%BC%E9%9F%B3%E8%A1%A8/%E6%8B%BC%E9%9F%B3%E6%8F%90%E5%8F%96.py ):
fromopenpyxlimportload_workbook开始行=3结束行=205所有拼音=[]def遍历表格(文件名):工作簿=load_workbook(文件名)表单=工作簿.activefor行inrange(开始行,结束行):for拼音序号inrange(0,2):拼音所在列=拼音序号*6+1拼音=表单.cell(row=行,column=拼音所在列).value.lower()for列inrang