【TTS】尝试让tts支持日语
·
index-tts是不支持日语的,但是有一种办法可以勉强让其输出日语,就是将日语转换为罗马音让其读出来:
pykakasi是一个Python自然语言处理(NLP)库,用于将平假名、片假名和汉字(日语文本)转写为罗马字(拉丁/罗马字母)。它能够处理NFC(指Unicode字符的一种标准化形式,用于确保不同表示方式的字符在比较时能够被视为相同)形式的字符。
from pykakasi import kakasi
kks = kakasi()
kks.setMode('J', 'H') # 汉字 -> 平假名
converter = kks.getConverter()
text = "日本語"
result = converter.do(text)
print(result) # にほんご
旧版v1.2 API、wakati类以及setMode()、getConverter()和do()函数将在v3.0版本发布后被弃用。使用convert()方法。
import pykakasi
kks = pykakasi.kakasi()
text = 'かな漢字'
result = kks.convert(text)
for item in result:
print("{}: kana '{}', hiragana '{}', romaji: '{}'".format(item['orig'], item['kana'], item['hira'], item['hepburn']))
convert的返回值为一个[str, str]的字典组成的列表,上面的代码执行如下:
(tts) bluebonnet27@bluebonnet27:~/Project/Python/tts_index/index-tts/utils$ python pykakasi_adapter.py
かな: kana 'カナ', hiragana 'かな', romaji: 'kana'
漢字: kana 'カンジ', hiragana 'かんじ', romaji: 'kanji'
各个字段的含义如下,我们使用赫本式罗马字即可:
| 字段名 | 含义 | 示例(输入:“東京”) |
|---|---|---|
| orig | 原始输入文本片段(未经转换的原始字符串) | “”“東京”“” |
| kana | 片假名(Katakana) 表示 | “”“トウキョウ”“” |
| hira | 平假名(Hiragana) 表示 | “”“とうきょう”“” |
| hepburn | 赫本式罗马字(Hepburn romanization) —— 最常见的罗马字拼写方案 | “”“toukyou”“” |
| passport | 日本护照标准罗马字(基于赫本式,但对长音等有特定规则,用于官方证件) | “”“toukyou”“”(多数情况同 Hepburn) |
| kunrei | 训令式罗马字(Kunrei-shiki) —— 日本政府官方标准,但国际较少使用 | “”“toukyou”“”(但如“し”在训令式中为 si,赫本为 shi) |
我们将日语转为罗马音,这样tts就可以很方便地读出来。但这样读出来的声音,没有感情,更像是机器声音。因此其实只能作为一种缓解手段,还是需要支持日语的tts。
更多推荐



所有评论(0)