Javascript母语文本
我正在为学校制定一个项目,我们将首先教孩子们计算。 不幸的是,这些孩子无法阅读,因此将以母语(在这种情况下是荷兰语)向他们讲述任务。
我一直在环顾四周,大多数的文本到语音的JavaScript库提供了很好的英语支持,但不适用于任何其他语言。 此外,HTML5语音合成不支持荷兰语:
在进一步的研究中,我遇到了一篇文章,您可以使用Google翻译语音将任何文本生成为语音。
您将其作为基本网址:http://translate.google.com/translate_tts
在我的情况下,附上你想要的语言荷兰语
http://translate.google.com/translate_tts?tl=nl
并附上你的文字:
“这是一个测试”,翻译成荷兰语
你会期望这与更长的文本工作,但它不会。
文本到语音不起作用
还有其他解决方案吗? Google语音讲的非常好,所以我希望链接以某种方式工作。
免责声明:这可能不是Google允许的。 未经Google许可,请勿使用此功能。
可以使用Google的文本以任意大小的文本进行朗读。 它需要一点点调整。
这是脚本:
function textToSpeech(text, language) {
if(text === undefined || text === null || text.length === 0)
return
var vid = document.createElement("video")
var textParts = []
text.split(" ").forEach(function(word) {
var textPartsIndex = textParts.length - 1
var currentStr = textParts[textPartsIndex]
if(currentStr !== undefined && currentStr.length + word.length < 100)
textParts[textPartsIndex] += " " + word
else
textParts.push(word)
})
function play(txt) {
vid.src = "http://translate.google.com/translate_tts?tl=" + language + "&q=" + txt
vid.load()
vid.play()
}
var partIndex = 0
play(textParts[partIndex])
vid.addEventListener("ended", function() {
var part = textParts[++partIndex]
if(part !== undefined)
play(part)
else
vid.removeEventListener("ended")
})
}
在使用之前,您必须关闭所有Chrome浏览器实例,并在Windows计算机上打开“运行”(WIN + R),然后键入“chrome - no-referrers”
在你的页面上,你现在可以写(我不懂荷兰语,所以这只是我找到的一些示例文本)
textToSpeech("Ik ga ervan uit dat de mens een groot vermogen bezit om externe informatie op te slorpen ," legt professor Georges uit . Hij kan zelfs 5 tot 6 maal méér informatie verwerken dan het debiet van het gesproken woord , 120 woorden per minuut . Teamgeest is voor mij geen ijdel woord . In de tweede plaats komen puur betekenisloze verhaspelingen niet in aanmerking , want die zijn niet ontstaan door verwarring met een ander woord .", "nl")
如果您的应用程序仅在本地运行,即不托管,则不必使用--no-referrers命令运行chrome。
停用引荐来源的原因是,如果有引荐人标题,Google会取消您的请求。
IFRAME版本不需要 - 不需要转介者
http://jsfiddle.net/9tTeg/
<body>
<script>
textToSpeech("Ik ga ervan uit dat de mens een groot vermogen bezit om externe informatie op te slorpen ," legt professor Georges uit . Hij kan zelfs 5 tot 6 maal méér informatie verwerken dan het debiet van het gesproken woord , 120 woorden per minuut . Teamgeest is voor mij geen ijdel woord . In de tweede plaats komen puur betekenisloze verhaspelingen niet in aanmerking , want die zijn niet ontstaan door verwarring met een ander woord .", "nl")
function textToSpeech(text, language) {
if(text === undefined || text === null || text.length === 0)
return
var vid = document.createElement("iframe")
document.body.appendChild(vid)
var textParts = []
text.split(" ").forEach(function(word) {
var textPartsIndex = textParts.length - 1
var currentStr = textParts[textPartsIndex]
if(currentStr !== undefined && currentStr.length + word.length < 100)
textParts[textPartsIndex] += " " + word
else
textParts.push(word)
})
function play(txt) {
vid.src = "http://translate.google.com/translate_tts?tl=" + language + "&q=" + txt
}
var partIndex = 0
play(textParts[partIndex])
var intervalId = setInterval(function() {
var part = textParts[++partIndex]
if(part !== undefined)
play(part)
else
clearInterval(intervalId)
}, 9000)
}
</script>
</body>
改进:不要用单词分隔字符串,而要使用点和逗号,所以暂停更自然。 每个部分目前每个播放时间为9秒,但如果按照点和逗号分组,则可以通过查看部分的长度来计算每个部分的时间长度,因为9秒可能会过多。
链接地址: http://www.djcxy.com/p/20761.html上一篇: Javascript Native Language Text
下一篇: Can an object infer an overridden field's type from a trait?