标签: text-to-speech

Android TTS onUtteranceCompleted回调未被调用

我试图让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)

android text-to-speech

15
推荐指数
2
解决办法
2万
查看次数

15
推荐指数
1
解决办法
3万
查看次数

Android文字转语音API听起来机器人

我是第一次学习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

15
推荐指数
2
解决办法
2822
查看次数

如何创建自定义文本到语音引擎

据我所知,TTS需要TTS引擎才能说一种语言.在Android模拟器2.2中,Pico TTS引擎是默认的.它只有一些流行的语言.我可以在Market上看到一些必须购买才能安装的引擎.我的问题:有没有办法创建支持其他语言的自定义引擎?(通过编程或使用软件)

(我不知道是否应该在StackOverflow或SuperUser中发布此问题.如果错误的地方,请迁移它)

android text-to-speech

14
推荐指数
1
解决办法
1万
查看次数

一个很好的文本到语音JavaScript库

我正在为我的应用程序寻找一个好的文本到语音javascript库.我环顾四周,看到了Jtalkspeak.js.但我不确定哪一个出去.我很想知道人们对它们的利弊,我很想知道你们是否还有其他任何Javascript插件.

我基本上可视化动画,我想为视障人士添加一些音频,告诉他们发生了什么.

javascript jquery text-to-speech jquery-plugins html5-audio

14
推荐指数
2
解决办法
3万
查看次数

如何控制Android TTS播放音频的方式

我有一个使用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)

android text-to-speech

14
推荐指数
1
解决办法
1198
查看次数

使用SAPI有没有办法为中文发音输入拼音?

目标是能够发音像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)

c# sapi text-to-speech cjk

13
推荐指数
1
解决办法
2356
查看次数

Android TTS检查支持的区域设置是否缺少/未下载语音数据

我正在使用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是对应于丢失语音的方法数据):在此输入图像描述

android text-to-speech android-intent

13
推荐指数
1
解决办法
1220
查看次数

为什么JSON.stringify对于似乎具有属性的对象返回空对象符号"{}"?

以下示例显示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.

javascript json text-to-speech stringify

12
推荐指数
2
解决办法
7470
查看次数

ImportError:没有在pyttsx中命名为'driver'的模块

我试图在Python 3.5.2pyttsx库中运行语音程序.但我遇到了很多问题.第一个是发动机.当我运行命令时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)

python text-to-speech python-3.x pyttsx

12
推荐指数
1
解决办法
7707
查看次数