我正在寻找一种将文本转换为音素的工具,(如文本到语音软件)我可以编程一个,但它不会没有错误并且需要花费很多时间!
所以我的问题是:
是否有一个简单的工具,例如"你好"转换为"HH AH0 L OW1"
也许一些命令行工具,所以我可以捕获标准输出?我正在寻找'Arpabet'风格的音素(参见'你好'的例子).
espeak做了类似的事情,但输出不是Arpabet风格,并且音素不会被某些决定者分开.
我在这里发表的第一篇文章:)
我看到有很多关于调车场算法的问题,但我希望仍然有论坛成员有兴趣帮助我解决关于该算法的另一个问题。
我确实搜索了其他帖子,看看我的答案是否已经得到解答,并且我在其他论坛和互联网上做了一些研究:
http://stackoverflow.com/questions/16877546/modifying-the-shunting-yard-algorithm-c
http://www.computerhope.com/forum/index.php?topic=146535.0
http://en.wikipedia.org/wiki/Shunting-yard_algorithm
http://www.autoitscript.com/forum/topic/164627-shunting-yard-with-functions/
Run Code Online (Sandbox Code Playgroud)
我的代码是用 vb 脚本编写的,因为我喜欢它的简单性,而且我不了解 java 或 c 之类的语言。
我的问题:
目前该算法允许错误使用“(”和“)”示例:允许使用function((10,20,)30),但这显然不是调用函数的正确方法。
我也不确定我的代码是否正确编写,来自维基百科的伪代码是我的参考,但它不是很清楚:(
我还计划用 if-else 语句和嵌套循环之类的东西来扩展它,因为主要目标是用类似 VB 的语言编写某种解释器作为学习项目:)
我的代码[编辑]:
SET PRECEDENCE = CREATEOBJECT("SCRIPTING.DICTIONARY")
WITH PRECEDENCE
.ADD "^",3
.ADD "*",2
.ADD "/",2
.ADD "%",2
.ADD "+",1
.ADD "-",1
.ADD "FUNCTION",0
.ADD "(",0
.ADD ",",0
.ADD ")",0
END WITH
'#############################################################################
tokenArray = split("FUNCTION ( ( A , B ) , C )")
msgbox SHUNTINGYARD(tokenArray)
'#############################################################################
FUNCTION SHUNTINGYARD(INPUT)
TOKEN_QUEUE = ARRAY()
TOKEN_STACK = ARRAY()
FOR TOKEN_NUMBER = …Run Code Online (Sandbox Code Playgroud)