tim*_*tim 7 javascript jquery html5 text-to-speech google-text-to-speech
我正在为学校做一个项目,我们将教孩子们第一次计算.不幸的是,这些孩子无法阅读,所以他们会用母语向他们讲述任务,在这种情况下是荷兰语.
我一直在环顾四周,大多数文本到语音的javascript库都为英语提供了很好的支持,但对于任何其他语言都没有.此外,HTML5 speechSynthesis不支持Dutch:

在进一步的研究中,我遇到了一篇文章,您可以使用Google Translate Voice将任何文本生成语音.
您可以将其作为基本网址:http: //translate.google.com/translate_tts
在我的案例荷兰语中附上您想要的语言
http://translate.google.com/translate_tts?tl=nl
并附上你的文字:
您希望这可以使用更长的文本,但事实并非如此.
还有其他解决方案吗?谷歌语音很好地说荷兰语,所以我希望链接以某种方式工作.
免责声明:这可能是 Google 不允许的。未经 Google 许可,请勿使用此功能。
\n\n可以将 Google 的文本转语音功能用于任何大小的文本。但它需要一些调整。
\n\n这是脚本:
\n\nfunction textToSpeech(text, language) {\n if(text === undefined || text === null || text.length === 0)\n return\n\n var vid = document.createElement("video")\n var textParts = []\n\n text.split(" ").forEach(function(word) {\n var textPartsIndex = textParts.length - 1\n var currentStr = textParts[textPartsIndex]\n if(currentStr !== undefined && currentStr.length + word.length < 100)\n textParts[textPartsIndex] += " " + word\n else\n textParts.push(word)\n })\n\n function play(txt) {\n vid.src = "http://translate.google.com/translate_tts?tl=" + language + "&q=" + txt\n vid.load()\n vid.play()\n }\n\n var partIndex = 0\n play(textParts[partIndex])\n\n vid.addEventListener("ended", function() {\n var part = textParts[++partIndex]\n if(part !== undefined)\n play(part)\n else\n vid.removeEventListener("ended")\n })\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在使用它之前,您必须关闭所有 Chrome 浏览器实例,并在 Windows 计算机上打开“运行”(WIN+R) 并键入“chrome --no-referrers”,不带“
\n\n在您的页面上,您现在可以编写(我不懂荷兰语,所以这只是我找到的一些示例文本)
\n\ntextToSpeech("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\xc3\xa9\xc3\xa9r 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")\nRun Code Online (Sandbox Code Playgroud)\n\n如果您的应用程序仅在本地运行,即未托管,则不必使用 --no-referrers 命令运行 chrome。
\n\n禁用引荐来源网址的原因是,如果存在引荐来源网址标头,Google 会取消您的请求。
\n\n不需要 --no-referrers 的 IFRAME 版本
\n\n\n\n<body>\n<script>\ntextToSpeech("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\xc3\xa9\xc3\xa9r 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")\n\nfunction textToSpeech(text, language) {\n if(text === undefined || text === null || text.length === 0)\n return\n\n var vid = document.createElement("iframe")\n document.body.appendChild(vid)\n var textParts = []\n\n text.split(" ").forEach(function(word) {\n var textPartsIndex = textParts.length - 1\n var currentStr = textParts[textPartsIndex]\n if(currentStr !== undefined && currentStr.length + word.length < 100)\n textParts[textPartsIndex] += " " + word\n else\n textParts.push(word)\n })\n\n function play(txt) {\n vid.src = "http://translate.google.com/translate_tts?tl=" + language + "&q=" + txt\n }\n\n var partIndex = 0\n play(textParts[partIndex])\n\n var intervalId = setInterval(function() {\n var part = textParts[++partIndex]\n if(part !== undefined)\n play(part)\n else\n clearInterval(intervalId) \n }, 9000)\n}\n</script>\n</body>\nRun Code Online (Sandbox Code Playgroud)\n\n改进:不再用单词分隔字符串,而是使用点和逗号,这样停顿更自然。当前每个部分的播放时间为 9 秒,但如果单词按点和逗号分组,您可以通过查看该部分的长度来计算每个部分的时间量,因为 9 秒可能太多了。
\n| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |