如何检查一个字符串是否可以发音?

13

我希望能够通过编程检查一个字符串是否可以发音或需要拼写出来。

例如,internationalization 可以读出来,但 i18nhhdirgxzf 都不能。

我可以想到一些简单的启发式方法,比如检查字符串是否包含非字母字符,但我希望有一种更健壮和科学的方法来实现。是否有算法方法,可以根据字符串的易发音程度对其进行评分呢?

相关问题:Is there a way to rank the difficulty of pronunciation of a word?,不过我没有列表,也无法进行预处理。


基于评论的更新。

  • 由于我是英语使用者,所以我感兴趣的是英语,但我可以想象一个基于声音和语言工作方式而不是特定语言特征的算法。
  • 通过发音,我指的是该字符串可以自然地读出来,可以发音出 hhdirgxzf 但它不会听起来像一个自然的单词,需要将其拆分。
  • 我心目中的一个具体用例是,当我收到字符串时,我想使用一个基本的文本到语音系统来大声朗读它们。我想确定要让TTS系统尝试发音的字符串标记,以及要使其拼写出来的字符串标记,在不确定的情况下更倾向于拼写。

3
由谁发音?普通话使用者?瑞典语使用者?英语使用者?所有人都可以吗? - Emil Vikström
3
我可以发音 i18n,类似于 eye-ate-een-en. 你的另一个例子有些挑战,但我会尝试一下... - High Performance Mark
3
可发音性可能是TTS(文本转语音)引擎可以提供意见的内容,因为它们已经完成了音节划分的艰苦工作。自己做这件事将是一项相当大的任务 - 例如“syzygy”,“strength”,“Knightsbridge”等等,祝你好运... - AakashM
1
顺便说一句,有趣的是,“声音和语言的运作方式”在某种程度上取决于语言。大脑对语音的处理部分“编程”由你听到的音素组成。因此,一些(不是全部)东亚人很难区分英语中的“l”和“r”音。许多西方人无法区分南亚软“d”音和硬“th”音,并且大多数人都无法发音。我在某些语言中有口齿不清,因为我不能卷舌“r”,所以有些普通的法语单词我无法正确发音,而西班牙语则是一场噩梦,但我可以听出它们之间的差别。等等。 - Steve Jessop
2
请将您的单词与英语字典文件进行核对。 - Nicolas Repiquet
显示剩余5条评论
3个回答

2
你可以先将单词分成音节,这样可能会有一些成功。 这个 SO 上的问题 可能会有所帮助。当然,这仅适用于像英语一样使用包含字母并且其字母包括元音音素的字母表的语言。

0
也许可以计算字母字符的数量,并将它们除以字符串的长度。基于字母字符密度评分? 此外,也许可以每个数字减少评分?

0

这些字符串的来源是什么?如果是自己生成的,那么可以尝试生成易于发音的字符串。可能可行的想法包括:

  • 从一个单词开始,用其他元音替换元音,用类似的辅音替换辅音。

  • 生成一个随机的 Soundex 然后反向推导出生成该 Soundex 的单词。

  • 连接三个或四个可发音的音节。

  • 交替使用辅音和元音。

  • Lorem Ipsum


实际上,这些字符串是发送给我的,我假设在进行任何操作之前需要进行标记化。我不知道里面会有什么内容,需要尝试并确定文本转语音引擎是否能够发音每个“单词”。 - brabster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接