我正在尝试使用HTML5和Google翻译在网站上使用文字转语音.
从Google获取演讲就像GET请求一样简单:http: //translate.google.com/translate_tts?tl = en&q = hello
为了播放该文件我正在使用audio-tag:
<audio id="speech" src="http://translate.google.com/translate_tts?tl=en&q=hello" controls="controls" autoplay="autoplay">Your browser does not support the audio element.</audio>
当我尝试使用Chrome 11在本地打开html文件时,这非常有效,但是当我从服务器打开html时它根本不起作用...它只是没有做任何事情(播放按钮闪烁一秒钟,但没有任何反应).
您可以在此处找到该文件:http://www.announcify.com/chrome/background.html
有任何想法吗?:)
汤姆
我已经编写了一个小型的Android Demo来使用不同语言的TTS.我有两个按钮,西班牙语和英语的布局.按下按钮会触发所选语言的发声.
但是,我无法更改语言(setLanguage(Locale locale)).我可以手动完成,使用手机设置并将TTS语言更改为美国,英国,意大利,德国等,但我的代码似乎不起作用.你能告诉我问题出在哪里吗?
谢谢!!
package com.ignacio.SpeakAPP;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.View;
import java.util.Locale;
public class SpeakAPPActivity extends Activity implements OnInitListener {
private static final String TAG = "TextToSpeechDemo";
private TextToSpeech mTts;
public boolean Passer = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/** Handle the action of the English Button **/
public boolean talknowEN(View v)
{
mTts = new TextToSpeech …Run Code Online (Sandbox Code Playgroud) 我只是偶然发现了TextToSpeech.addEarcon(String, String)Android的TTS API中的方法.我实际上无法在网上找到更多信息,所以有人知道什么是耳环吗?
谢谢!
我在SuperUser上问了这个问题,但它被置若罔闻.希望我能在这里获得更多的观众.
我正在寻找像ScriptVox这样的低成本(或免费)解决方案,只有更好的引擎.也就是说,读入脚本并将字符分配给语音.我已经阅读了这里的帖子,但即使是那些我必须连接wav文件.并不是我不喜欢Audacity,而是耗费时间.我正在考虑写自己的,但我确信必须有一个解决方案.有什么建议?
我正在TextToSpeech上创建一个应用程序.但是当我试图运行时,它会在后续行上抛出异常.
tts.speak(ruleOne, TextToSpeech.QUEUE_ADD, null);
Run Code Online (Sandbox Code Playgroud)
这是我的完整代码供参考
请给我任何提示.我不明白我的代码有什么问题.当我编译我的代码时,所有值都正确传递但当它跳转到tts对象上方时它会命中空指针异常.是什么语法错了?哪个方法首先调用onCreate()或onActivityResult?提前致谢
这是Logcat的内容.
04-10 13:58:34.082: WARN/System.err(19352): java.lang.NullPointerException
04-10 13:58:34.082: WARN/System.err(19352): at com.example.examguide.ExamRulesActivity.onCreate(ExamRulesActivity.java:60)
04-10 13:58:34.082: WARN/System.err(19352): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-10 13:58:34.092: WARN/System.err(19352): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-10 13:58:34.092: WARN/System.err(19352): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-10 13:58:34.092: WARN/System.err(19352): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-10 13:58:34.092: WARN/System.err(19352): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-10 13:58:34.092: WARN/System.err(19352): at android.os.Handler.dispatchMessage(Handler.java:99)
04-10 13:58:34.092: WARN/System.err(19352): at android.os.Looper.loop(Looper.java:123)
04-10 13:58:34.092: WARN/System.err(19352): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-10 13:58:34.102: WARN/System.err(19352): at java.lang.reflect.Method.invokeNative(Native Method)
04-10 13:58:34.102: WARN/System.err(19352): at java.lang.reflect.Method.invoke(Method.java:507)
04-10 13:58:34.102: WARN/System.err(19352): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-10 13:58:34.102: WARN/System.err(19352): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-10 13:58:34.102: WARN/System.err(19352): …Run Code Online (Sandbox Code Playgroud) 我试图找到有关编写盲人可以访问的网页的信息,但尚未找到有用的信息.具体来说,我正在寻找的是如何向屏幕阅读器提供有关如何阅读我的页面内容的具体说明.我知道屏幕阅读器的覆盖用户设置可能被视为一种烦恼,但是,我希望可以访问的内容是诗歌,戏剧,故事和其他类型的创意写作.由于在同一个文档中经常会有很多不同的人物说话,如果有一种方法让我能够指定屏幕阅读器语音的不同特征,以便让盲人(或任何真正的人)有机会可听见,那将会很棒区分单独的说话人物.现在,我正在做的是使用叙述者告诉正在讲话的听众,这非常不自然,令人分心.
内容的一个例子可能是:
布伦达:嘿,吉米!这是怎么回事?
吉米:布兰达!看看!你听起来像个女士,我听起来像个男人!
慢孩子:噢......我听起来很慢......
那么,有没有办法让我定义标签,属性或以某种方式将脚本附加到元素,以便更改网页中特定内容的发言权?是否有我可以使用的标准,以便在IE和Firefox中以类似的方式呈现语音文本?那么本机浏览器支持,我已经看过一些用于屏幕阅读的插件,但我很好奇是否有任何内置于IE或Firefox中的文本到语音支持,所以我不必安装插件.
更新:黑客在Firefox中执行此操作的方式:
如果找到更简单的方法,请给出更好的答案!
这是一个有点前途的东西..."speak.js"引用:
"speak.js是eSpeak的一个端口,它是一个开源语音合成器,使用Emscripten从C++到JavaScript."
在源speak.js' GitHub的页面:kripken/speak.js从readme.markdown引用:
"选项
你也可以通过调用speak()来指定一些选项
speak('hello world', { option1: value1, option2: value2 .. })可用选项包括:
Run Code Online (Sandbox Code Playgroud)amplitude: How loud the voice will be (default: 100) pitch: The voice pitch (default: 50) speed: The speed at which to talk (words per minute) (default: 175) voice: Which voice to use (for a non-default voice, requires you to build speak.js to include the proper data. See Language Support below) (default: …
我正在研究文本到语音应用程序但我遇到了一个问题,我无法知道TTS正在讲的现在这个词.有没有办法找到这个.?
例如:如果TTS正在说这个字符串:可能已经有你的答案的问题以及当它已经"已经"时,我怎么能突出'已经'.
多年来(从字面上看),我的应用程序遭遇了性能不佳的文本到语音引擎的困境,特别是调用时的初始化时间:
tts = new TextToSpeech(context, myOnInitListener);
Run Code Online (Sandbox Code Playgroud)
以上可能导致UI滞后,如果您在SO上搜索"文本到语音初始化缓慢",您会发现很多帖子.嵌入式高品质IVONA声音曾经是最糟糕的罪魁祸首,但Google TTS引擎现已获此殊荣.
他们最近的APK更新导致初始化时出现严重滞后 - 无需测试此代码,您可以转到Android文本到语音设置并尝试在可用引擎之间切换,同时按"收听样本",显示延迟很好".
为了尝试解决这个问题,我实施了以下内容:
private volatile TextToSpeech tts;
AsyncTask.execute(new Runnable() {
@Override
public void run() {
tts = new TextToSpeech(context, volatileOnInitListener);
}
});
Run Code Online (Sandbox Code Playgroud)
这完全解决了初始化的滞后问题,但我担心这可能会产生副作用,我没有考虑过?任何人都可以想到吗?
我也很困惑,因为我相信TextToSpeech构造函数是异步的,因此将此构造函数移动到工作线程应该没有区别?如果这种实现是前进的方向,那么Google为什么不在TextToSpeechSettings中实现它呢?
希望有人能澄清以上内容.提前致谢.
编辑 - 当我说"构造函数是异步的"时,我真的指的是它启动的引擎初始化过程,以及最终调用onInit
以前的问题已经提出了相同或类似的询问
但似乎没有使用创建的变通方法window.speechSynthesis().虽然有一些解决方法使用epeak,meSpeak 如何在Chrome浏览器中创建文本或将文本转换为音频?或向外部服务器发出请求.
如何捕捉和记录的音频输出window.speechSynthesis.speak()调用和返回结果为Blob,ArrayBuffer,AudioBuffer或其他对象类型?
正如一个人能够使用各种语音到文本的"听写"工具将口语转换成相应的文本,我想知道是否有类似的工具将口语转换成相应的SSML.也就是说,除了与说话者的声音中存在的任何语调,韵律,暂停/休息,变形等相关的相关SSML标签之外,它还将提供文本.
text-to-speech speech-synthesis speech-to-text ssml alexa-voice-service
text-to-speech ×10
android ×5
javascript ×3
audio ×2
html5 ×2
blind ×1
css ×1
html ×1
java ×1
multilingual ×1
ssml ×1
windows-7 ×1