[嗯]字的声母韵母问题
JiaYK opened this issue · comments
运行环境
- 操作系统(Linux/macOS/Windows):Linux(Ubuntu 18.04)
- Python 版本: 3.8.1
- pypinyin 版本:0.47.0
问题描述
开始我以为[嗯]字的拼音错了,在issue里面查了一下,发现了 #109
但是当我想使用[嗯]字的声韵母的时候,发现好像提取不出来
如果加了 neutral_tone_with_five=True
那么韵母就是 5,感觉比较奇怪
问题复现步骤
Python 3.8.1 (default, Jan 8 2020, 22:29:32)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
from pypinyin import pinyin, Style
txt = '嗯'
shengmu = pinyin(txt, style=Style.INITIALS, neutral_tone_with_five=True)
yunmu = pinyin(txt, style=Style.FINALS_TONE3, neutral_tone_with_five=True)
shengmu
[['']]
yunmu
[['5']]
yunmu = pinyin(txt, style=Style.FINALS_TONE3)
yunmu
[['']]
strict=False,会显示正确的韵母[n2](虽然个人觉得可能n4比较常用)
感谢反馈!
如果加了 neutral_tone_with_five=True 那么韵母就是 5,感觉比较奇怪
这个看起来是个 bug。
BTW, n
不是韵母。倒是可以考虑在获取声母的是否返回 n
。
嗯嗯,按标准来说,的确没有 n
这个韵母,才发现自己用了这么多年的 嗯嗯
其实都是错的
试了一试,感觉 好像也不是声母的 n
,但是这么做应该比较方便,不然 嗯
这个字大多数情况下都要想办法单独再写处理逻辑
百度给的是 ng
,但是也没有 ng
这个韵母
如果加了 neutral_tone_with_five=True 那么韵母就是 5,感觉比较奇怪
这个问题最新版已修复。当前会返回空字符串,因为它既没有声母也没有韵母。
既没有声母也没有韵母,会导致我们代码挂掉,因为我们用
lazy_pinyin("嗯", neutral_tone_with_five=True, style=Style.INITIALS)
获取声母,用
lazy_pinyin("嗯", neutral_tone_with_five=True, style=Style.FINALS_TONE3)
获取韵母,一般会认为 finals 这个序列不会有空值,但是存在 嗯 时就会有空值 ..,所以输入中包含 嗯 时我的程序会报错
def _all_tone_three(self, finals: List[str]) -> bool:
return all(x[-1] == "3" for x in finals)
用 pypinyin==0.44.0 就没有问题,另外 espnet 的依赖里面也写了 pypinyin<=0.44.0 (不知道为啥)
建议 嗯 可以用 en 来做韵母和 恩 保持一致,标贝的标注里是这么干的
建议你们有大的改动的时候还是考虑下兼容性,毕竟 pypinyin 在语音合成里面是一个比较基础的库,谢谢