我试图让Android TTS API读取我的"话语",然后调用onUtteranceCompleted()监听器失败.我已经注册了我的TTS对象,它返回SUCCESS,所以我无法弄清楚为什么我的回调没有被调用.
我试过寻求帮助,但似乎其他人也有这方面的困难.我错过了一些简单的事吗?
谢谢你尽你所能的帮助.
package com.test.mytts;
import java.util.HashMap;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
import android.widget.TextView;
import android.widget.Toast;
public class MyTTS extends Activity implements OnInitListener, OnUtteranceCompletedListener
{
TextView tv;
private TextToSpeech _tts;
@Override
public void onCreate(Bundle savedInstanceState)
{
tv = new TextView(this);
tv.setText("MyTTS: ");
super.onCreate(savedInstanceState);
setContentView(tv);
_tts = new TextToSpeech(this, this);
}
@Override
public void onInit(int status)
{
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "test");
if (status == TextToSpeech.SUCCESS) …Run Code Online (Sandbox Code Playgroud) 是否有针对桌面或浏览器环境的已知API的完整列表?
speech-recognition text-to-speech speech-synthesis speech-to-text
我是第一次学习android开发,我的目标是创建一个简单的Hello World应用程序,它接收一些文本,并大声读出它们.
我的代码基于我找到的一个例子,这是我的代码:
class MainFeeds : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_feeds)
card.setOnClickListener{
Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show()
TTS(this, "Hello this is leo")
}
}
}
class TTS(private val activity: Activity,
private val message: String) : TextToSpeech.OnInitListener {
private val tts: TextToSpeech = TextToSpeech(activity, this, "com.google.android.tts")
override fun onInit(i: Int) {
if (i == TextToSpeech.SUCCESS) {
val localeUS = Locale.US
val result: Int
result = tts.setLanguage(localeUS)
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Toast.makeText(activity, "This Language is …Run Code Online (Sandbox Code Playgroud) android voice text-to-speech speech-synthesis google-text-to-speech
据我所知,TTS需要TTS引擎才能说一种语言.在Android模拟器2.2中,Pico TTS引擎是默认的.它只有一些流行的语言.我可以在Market上看到一些必须购买才能安装的引擎.我的问题:有没有办法创建支持其他语言的自定义引擎?(通过编程或使用软件)
(我不知道是否应该在StackOverflow或SuperUser中发布此问题.如果错误的地方,请迁移它)
我有一个使用Android TTS API将文本转录为音频的类.我可以控制音高和速度; 但我注意到引擎需要一个文本字符串和一个哈希对象.我注意到一些单词发音太快而不易被识别,并且拐点似乎太不自然了.有没有办法控制这两件事; 可能通过HashMap?以下是我如何使用引擎:
mTts = new TextToSpeech(Globals.context, this); // context, listener
}
@Override
public void onInit(int status) {
HashMap<String, String> myHashRender = new HashMap();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, speech);
mTts.setPitch(0.8f);
mTts.setSpeechRate(0.6f);
mTts.synthesizeToFile(speech, myHashRender, fileOutPath);
while (mTts.isSpeaking()) try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
mTts.stop();
mTts.shutdown();
Run Code Online (Sandbox Code Playgroud) 目标是能够发音像wo3.System.Speech可以处理汉字,但有没有办法直接输入拼音?从http://msdn.microsoft.com/en-us/library/ms720566(v=vs.85).aspx看来,我应该能够像这样写出拼音
<PRON SYM="ni 3"/>
Run Code Online (Sandbox Code Playgroud)
我如何使用PRON SYM?
更新: 以下是一些讨论该问题但没有解决方案的网页: - http://www.ms-news.net/f3012/problem-with-phonemes-and-chinese-tts-3031240.html
Update2 我在.NET中使用System.Speech.Synthesizer.也许这就是问题所在.我可以看到将它输入Speech Properties工作正常:

如果我从C#中执行此操作,它只会读取标记:
var culture = CultureInfo.GetCultureInfo("zh-CN");
var synth = new SpeechSynthesizer();
var voices = synth.GetInstalledVoices(culture);
if (voices.Count > 0)
{
synth.SelectVoice(voices[0].VoiceInfo.Name);
synth.Speak("<pron sym=\"ni 3 hao 3 xiao 1\"/>");
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Android的TextToSpeech类.一切正常.但是,有些语言/语言环境默认情况下未安装但由TTS引擎支持,我无法捕获丢失语音数据的状态.
在互联网开启的情况下,当我尝试将语言设置为尚未下载语音数据的新语言环境时,它只需下载语音数据并正常/成功地执行说话方法.
但是,在关闭互联网的情况下,当我尝试将语言设置为尚未下载其语音数据的新语言环境时,它会尝试下载语音数据.但是没有互联网,它只是在所选语言环境的"语言和输入"下的"TTS语音数据"设置屏幕上显示"下载",没有任何进展.正如预期的那样,由于未下载语音数据,因此说话方法不起作用.当发生这种情况时,我认为TTS方法setLanguage/isLanguageAvailable将返回LANG_MISSING_DATA以便我捕获此状态,但是,它只返回LANG_COUNTRY_AVAILABLE.情况如下图所示:
我希望能够检测到所选语言环境的语音数据何时未下载/丢失,并提供toast消息或直接用户下载它.我见过几个职位建议使用采用isLanguageAvailable这样的一个.我还查看了android文档,似乎isLanguageAvailable的返回值应该用LANG_MISSING_DATA捕获丢失语音数据的状态.
我还尝试使用ACTION_CHECK_TTS_DATA发送一个intent,作为检查丢失数据的另一种方法,如我链接的Android文档中所建议的那样.但是,resultCode再次没有捕获/指示语音数据丢失(CHECK_VOICE_DATA_FAIL),而是返回CHECK_VOICE_DATA_PASS.
在这种情况下,如何捕获可用/支持的语言/语言环境的状态,语音数据丢失?我也很好奇为什么CHECK_VOICE_DATA_PASS和LANG_MISSING_DATA不是返回的值.当语音数据丢失时,它不应该返回这些值吗?谢谢!下面是我尝试在没有下载语音数据的语言环境中使用setLanguage和isLanguageAvailable时的返回值(0和1是日志中显示的方法的返回值,-1是对应于丢失语音的方法数据):
以下示例显示JSON.stringify()返回"{}"SpeechSynthesisVoice对象的字符串:
var voiceObject = window.speechSynthesis.getVoices()[0];
JSON.stringify(voiceObject); //returns "{}"?
Run Code Online (Sandbox Code Playgroud)
完整示例:JSFiddle
它为什么会返回,"{}"而不是像"{voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService: false, default: false}"什么?
请注意,上面的示例不适用于chrome或iOS; 它针对的是Mozilla Firefox.
我试图在Python 3.5.2和pyttsx库中运行语音程序.但我遇到了很多问题.第一个是发动机.当我运行命令时import pyttsx,编译器给出了如下错误:
ImportError: No module named 'engine'
Run Code Online (Sandbox Code Playgroud)
然后我找到了这个答案.但它也没有用.最后,我现在有另一个 - 类似 - 如下所示的错误:
D:\Users\orcuny\Desktop\AVA>python ava.py
Traceback (most recent call last):
File "D:\Users\orcuny\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyttsx\__init__.py", line 37, in init
eng = _activeEngines[driverName]
File "D:\Users\orcuny\AppData\Local\Continuum\Anaconda3\lib\weakref.py", line 131, in __getitem__
o = self.data[key]()
KeyError: None
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "ava.py", line 3, in <module>
engine = pyttsx.init()
File "D:\Users\orcuny\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyttsx\__init__.py", line 39, in init
eng = Engine(driverName, …Run Code Online (Sandbox Code Playgroud) text-to-speech ×10
android ×5
javascript ×2
c# ×1
cjk ×1
html5-audio ×1
jquery ×1
json ×1
python ×1
python-3.x ×1
pyttsx ×1
sapi ×1
stringify ×1
voice ×1