使用num2words作为pico2wave的输入,我的TTS越来越差

时间:2018-12-13 01:01:20

标签: python

在Python脚本中,num2words似乎会生成unicode文本。当将其用作pico2wave的输入时,在文本前添加一个'u'。 num2words如何生成ascii,以便pico2wave可以正常工作?

打印输出,例如:

var1 = 12  

numb = numb2words(var1)  

print(numb)  

输出:u'twelve'

用作微微输入时,会说“ uhtwelve”。

1 个答案:

答案 0 :(得分:0)

您可以使用库unicodedata将您的unicode转换为ascii。

我们将使用unicodedata.normalize的“ NFKD”形式进行转换。根据{{​​3}}:

  

基于兼容性,还有两种其他的普通形式   等价。在Unicode中,支持某些字符,其中   通常会与其他字符统一。例如,U + 2160   (罗马数字ONE)与U + 0049(拉丁字母大写)完全相同   字母I)。但是,Unicode支持它与   现有字符集(例如gb2312)。

     

正常形式的KD(NFKD)将应用兼容性分解,   也就是说,将所有兼容字符替换为等效字符。

因此解决方案将是:

import unicodedata

var1 = 12

numb = numb2words(var1)
numb = unicodedata.normalize('NFKD', numb).encode('ascii','ignore')

print(numb)