- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个应用程序,它需要使用文本转语音类才能读取文本。问题是初始化非常慢,大约需要 4 秒。我遵循了本教程:http://code.tutsplus.com/tutorials/use-text-to-speech-on-android-to-read-out-incoming-messages--cms-22524 。我做了一些研究,但没有找到真正好的答案,或者我想念它们。
例如我尝试了这个 solution通过在线程中调用我的 checkTTS 函数,但没有可见结果。 Here和 here ,他们说我的 checkTTS 功能可能没有那么有用,我只能看看我需要的语言是否可用。
所以我的问题:
这是我的 Activity 代码:
public class MyActivity extends Activity {
private Speaker _speaker;
private final int CHECK_CODE = 0x1;
private final int SHORT_DURATION = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("I'm just before checkTTS");
checkTTS();
}
private void checkTTS(){
System.out.println("I'm in checkTTS");
Intent check = new Intent();
check.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(check, CHECK_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CHECK_CODE){
if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
System.out.println("I'm in onActivityResult");
_speaker = new Speaker(this);
}else {
Intent install = new Intent();
install.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(install);
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
_speaker.destroy();
}
}
这是我的演讲者类(class):
public class Speaker implements OnInitListener {
private TextToSpeech _tts;
private boolean _ready = false;
private boolean _allowed = false;
public Speaker(Context context){
_tts = new TextToSpeech(context, this);
}
public void setSpeedRate(float speechrate) {
_tts.setSpeechRate(speechrate);
}
public boolean isAllowed(){
return _allowed;
}
public void allow(boolean allowed){
_allowed = allowed;
}
@Override
public void onInit(int status) {
System.out.println("I'm in onInit from Speaker");
if(status == TextToSpeech.SUCCESS){
_tts.setLanguage(Locale.UK);
_ready = true;
} else{
_ready = false;
}
}
public void speak(String text){
if(_ready && _allowed) {
HashMap<String, String> hash = new HashMap<String,String>();
hash.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));
_tts.speak(text, TextToSpeech.QUEUE_ADD, hash);
}
}
public boolean isSpeaking() {
return _tts.isSpeaking();
}
public void pause(int duration){
_tts.playSilence(duration, TextToSpeech.QUEUE_ADD, null);
}
public void stop() {
_tts.stop();
}
public void destroy(){
_tts.shutdown();
}
}
这是来自 eclipse 的日志:
15:14:58.897: D/dalvikvm(23966): GC_CONCURRENT freed ...
15:15:00.014: I/System.out(23966): I'm just before checkTTS
15:15:00.014: I/System.out(23966): I'm in checkTTS
15:15:00.046: D/AbsListView(23966): unregisterIRListener() is called
15-13 15:15:01.272: I/System.out(23966): I'm in onActivityResult
15:15:01.311: I/TextToSpeech(23966): Sucessfully bound to com.samsung.SMT
15:15:01.663: D/AbsListView(23966): onVisibilityChanged() is called, visibility : 4
15:15:01.663: D/AbsListView(23966): unregisterIRListener() is called
15:15:02.600: I/TextToSpeech(23966): Connected to ComponentInfo{com.samsung.SMT/...}
15:15:02.608: I/TextToSpeech(23966): onServiceConnected but waiting
15:15:02.608: I/System.out(23966): I'm in onInit from Speaker
15:15:02.616: I/System.out(23966): Speaker ready
15:15:02.616: I/TextToSpeech(23966): onServiceConnected waiting end
感谢您的帮助,此致,泽德13
PS:抱歉,错误......
编辑:有趣的事实,三星语音的启动速度似乎比谷歌语音的启动速度更快......
最佳答案
onCreate
方法中),然后检查 available languages或if some language is supported 。由于您跳过了一个步骤 (ACTION_CHECK_TTS_DATA),因此如果一切成功,您的初始化将会更快。您可以检查系统中安装的引擎looking to this code并使用该信息来启动更准确的 ACTION_CHECK_TTS_DATA Intent 。
关于java - 如何加快文本转语音的初始化速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30218379/
我有一个说一些短语的音板应用程序,但是现在我希望能够从男声/女声中改变出来,问题是我不知道该怎么做。任何帮助,将不胜感激。 我正在使用AVFoundation/AVAudioPlayer播放声音。 谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
因为我想在后台录制音频,所以我使用了服务..但是我无法在服务中录制音频。 我在 Activity 中尝试了相同的代码,它对我有用。但是如何在输入语音/语音时在后台进行录音,这意味着如果有语音输入就应该
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我有一个音频流,我会从中提取单词(语音)。因此,例如使用 audio.wav 我会得到 001.wav、002.wav、003.wav 等,其中每个 XXX.wav 是一个词。 我正在寻找一个库或程序
不幸的是,我只能说四种语言,那么如果我知道文本的语言,我如何知道我必须使用哪种 OS X 语音?我在Apple的文档中找不到任何有关它的信息。至少有一张有语音/语言的 table 吗? 最佳答案 您可
有没有办法从命令行使用 MS Speech 实用程序?我可以在 Mac 上完成,但在 Windows XP 上找不到任何引用。 最佳答案 我在这个主题上的 2 美分,命令行单行: 在 Win 上使用
所以我开始了我的不和谐机器人的音乐部分。现在,正如我在上一个问题中所做的那样,这里只是音乐命令的片段:Pastebin #1 在显示 if (msg.member.voiceConnection ==
有谁知道有什么好的 API 或库可以听(语音)文本。我尝试听三种语言的(语音)文本,我想知道最好从哪里开始以及如何开始。我可以对所有三种语言使用通用语音吗?我将使用 eclipse 和 java 作为
首先,我只是一个爱好者,如果这是一个愚蠢的问题或者我太天真了,我很抱歉。 (这也意味着我买不起昂贵的库) 情况是这样的:我正在使用 C#.NET 构建一个简单的语音聊天应用程序(类似于 Ventril
我正在制作一个模块,可以生成和传输语音 IP 数据包。我知道我必须为服务类型字段设置一些值。这个值是多少? 最佳答案 该值应该是x。 关于c - 语音 ip 的服务类型字段集,我们在Stack Ove
有人能帮帮我吗?我使用 SAPI 语音文本,但我不能设置女声,这是代码,它用男声说话,但我想改变它,我想要女声 #include "stdafx.h" using namespace std; voi
我正在寻找一种方法来为一个项目在 Java 中识别预注册的语音命令,但我还没有想出一个好的方法,我研究了快速傅里叶 和处理 wave 文件 的不同方法,但我无法决定我应该如何实现它。 这个想法很简单,
我在 android 的语音识别 API 工作。 我是 Speech Recognition Api 的新手,我的要求是西类牙语语音,并从 Android 的语音识别 API 中获得西类牙语的最佳匹配
我在 Java 中使用一组名为(MaryTTS[实际上还有更多])的库来将 text to speech 转换为该目的,使用以下代码: public class TextToSpeech {
我正在尝试使用webRTC和php作为服务器端来实现单向语音传输。 查看samples ,我无法理解webRTC机制。 在我看来,流程应该是这样的: 调用者和接收者在服务器上注册 接收者监听来电 调用
我的名字是 Joey,我想知道是否有一种在 C++ 中使用语音的方法,如果有人可以给我指出引用资料和书籍,非常感谢...... 最佳答案 你应该看看 Windows Text-To-Speech AP
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我正在使用 Java 语音识别 API - Jarvis,位于 https://github.com/lkuza2/java-speech-api 但是,当我运行应用程序时,出现错误:服务器返回 HT
我们正在做一个需要讲阿拉伯语的项目,我们找到了一个开源工具,Mbrola project , 可以做到这一点。 但是,我还需要一些方法将阿拉伯语文本转换为 SAMPA 语音。那么有人可以帮助我将阿拉伯
我是一名优秀的程序员,十分优秀!