标签: text-to-speech

为Android TTS引擎指定发音的最佳做法?

总的来说,我对Android的默认文本到语音引擎(即com.svox.pico)印象非常深刻.正如预期的那样,它会错误地发音一些词(就像我一样),因此偶尔需要一些发音指导.所以我想知道最好的做法是用语音拼写出pico TTS引擎错误发音的那些词.

例如,查查拉卡鸟的正确发音是CHAH-chah-LAH-kah.这是TTS引擎产生的:

mTts.speak("Chachalaca", TextToSpeech.QUEUE_ADD, null); // output: chuh-KAL-uh-KUH
mTts.speak("CHAH-chah-LAH-kah", TextToSpeech.QUEUE_ADD, null); // output: CHAH-chah-EL-AY-AYCH-dash-kuh
mTts.speak("CHAHchahLAHkah", TextToSpeech.QUEUE_ADD, null); // output: CHA-chah-LAH-ka
mTts.speak("CHAH chah LOCKah", TextToSpeech.QUEUE_ADD, null); // output: CHAH-chah-LAH-kah
Run Code Online (Sandbox Code Playgroud)

这是我的问题.

  • 是否有Android TTS引擎识别的标准拼音?
  • 如果没有,是否有制作自发音拼写,这将使更多的拼写可能是正确的未来TTS引擎/版本的一些一般的规则?
  • 似乎Android TTS引擎忽略了文本案例.指定重点的最佳方法是什么?

顺便说一句,这是TTS引擎写入logcat的内容:

V/TtsService(294):TTS处理:姜查姜查洛克
V/TtsService(294):TtsService.setLanguage(ENG,USA)
I/SVOX微微引擎(294):语言已经被加载(EN-US == EN-US )
I/SynthProxy(294):将语速设置为100
I/SynthProxy(294):将音高设置为100

[UPDATE]

我尝试将XML文档传递给TextToSpeech.Speak(),如下所示:

            String text = "<?xml version=\"1.0\"?>" +
                "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" " +
                    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
                    "xsi:schemaLocation=\"http://www.w3.org/2001/10/synthesis " +
                        "http://www.w3.org/TR/speech-synthesis/synthesis.xsd\" " +
                    "xml:lang=\"en-US\">" +

                    "That is a big car! " +
                    "That <emphasis>is</emphasis> a big car! …
Run Code Online (Sandbox Code Playgroud)

android text-to-speech ssml

17
推荐指数
2
解决办法
9977
查看次数

获取文本到语音的可用区域设置(TTS)

我正在研究flashcard程序的文本到语音的实现.应该读出不同语言的文本.为了正确地执行此操作,用户必须选择要读取的文本的语言(将在以后存储和使用,无需问题).

是否有可能在Android系统上获取可用的TTS语言?如果没有,是否有可能在系统上获得所有可用的区域设置?


我想,我知道了:getAvailableLocales()tts.isLocaleAvailable(locale)

android locale text-to-speech

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

System.Speech.Synthesis在2012 R2上挂起了高CPU

我有一个asp.net MVC应用程序,它有一个控制器动作,它接受一个字符串作为输入,并发送一个合成语音的响应wav文件.这是一个简化的例子:

    public async Task<ActionResult> Speak(string text)
    {
        Task<FileContentResult> task = Task.Run(() =>
        {
            using (var synth = new System.Speech.Synthesis.SpeechSynthesizer())
            using (var stream = new MemoryStream())
            {
                synth.SetOutputToWaveStream(stream);
                synth.Speak(text);
                var bytes = stream.GetBuffer();
                return File(bytes, "audio/x-wav");
            }
        });
        return await task;
    }
Run Code Online (Sandbox Code Playgroud)

应用程序(特别是此操作方法)在2008 R2服务器,2012(非R2)服务器和我的8.1 ​​dev PC上的服务器环境中运行良好.它在标准的Azure 2012 R2虚拟机上运行良好.但是,当我将其部署到三个2012 R2服务器(最终的永久主页)时,操作方法永远不会产生HTTP响应 - IIS工作进程无限期地最大化其中一个CPU核心.事件查看器中没有任何内容,并且在使用Procmon查看服务器时没有任何内容跳出来.我已经通过远程调试附加到进程,并且synth.Speak(text)永远不会返回.当synth.Speak(text)执行呼叫我立即看到在服务器的任务管理器失控W3wp.exe进程.

我的第一个倾向是相信一些过程在服务器上干扰语音合成,但是Windows讲述者工作正常,像这样的简单控制台应用程序也能正常工作:

static void Main(string[] args)
{
    var synth = new System.Speech.Synthesis.SpeechSynthesizer();
    synth.Speak("hello");
}
Run Code Online (Sandbox Code Playgroud)

所以显然我不能责怪服务器的语音合成.那么也许我的代码中存在问题,或者IIS配置中有什么奇怪的东西?如何在这些服务器上使此控制器操作正常工作?

这是测试操作方法的简单方法(只需url为路由获取正确的值):

<div>
    <input type="text" id="txt" autofocus />
    <button type="button" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc text-to-speech speech-synthesis windows-server-2012-r2

17
推荐指数
1
解决办法
1021
查看次数

谷歌的文字转语音引擎声音?

大多数人可能都知道google翻译的文本到语音合成器,因为你可以在这里以编程方式访问btw:

http://translate.google.com/translate_tts?tl=en&q=text
Run Code Online (Sandbox Code Playgroud)

我的印象是它有时使用espeak,但在主要语言中,质量要好得多.谁知道谷歌正在使用什么,或者他们正在使用什么声音?显然,这不是正常的,也不是mbrola espeak的声音.

text-to-speech google-translate speech-synthesis espeak machine-translation

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

为什么没有UtteranceProgress Listener在Text to Speech上被调用?

我试图在文本的开头和结尾调用一些方法,所以我使用了setOnUtteranceProgressListener,但它不能工作/被调用.

我究竟做错了什么?

这里需要的代码:

类:

public class SpeechRecognizerActivity extends Activity implements TextToSpeech.OnInitListener
Run Code Online (Sandbox Code Playgroud)

初始化方法:

 @Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        String language = Locale.getDefault().getLanguage();
        int result = tts.setLanguage(Locale.US);
        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "This Language is not supported");
        } else {

        }
    } else {
        Log.e("TTS", "Initilization Failed!");
    }
}
Run Code Online (Sandbox Code Playgroud)

说话开始的方法:

private void speakOut(String text) {
    setTtsListener();
    tts.setPitch(1.5f);
    tts.setSpeechRate(1.5f);
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
Run Code Online (Sandbox Code Playgroud)

监听器(方法在speakOut中调用):这些日志都不会显示在Logcat中.

private void setTtsListener() {
    if (Build.VERSION.SDK_INT >= 15) …
Run Code Online (Sandbox Code Playgroud)

java android text-to-speech complete listener

16
推荐指数
1
解决办法
3444
查看次数

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万
查看次数

Droid可访问性 - 禁用特定TextView的TalkBack

我找不到应该是一个非常简单的任务的答案.有人可以向我解释关闭android中单个元素的可访问性(对话)的最佳方法吗?

我有一个TextView,我以编程方式将contentDescription设置为nil,并且它保持对话说出标题,但是当浏览视图时它仍然停在该textview上......它只是保持沉默.

我的目标是让对话完全忽略TextView的存在.

请帮忙!

谢谢 :)

android accessibility text-to-speech talkback

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

使用Python的现实文本到语音不需要互联网?

我正在尝试创建一个人工智能程序(没什么大不了或特别的)我希望它有一个声音(谁不会?).我已经研究过espeak,festival,gTTS,它们很好用,而且不够现实,让我真的很自豪,如果这样做有意义的话.我一直在寻找更现实的东西.像这样

from gtts import gTTS

tts = gTTS(text='what to say', lang='en')
tts.save('/path/to/file.mp3')
Run Code Online (Sandbox Code Playgroud)

gTTS工作正常.我喜欢它.这是现实的,但它需要互联网..问题是,我希望我的应用程序尽可能独立.我恨这取决于互联网接入.

还有其他选择吗?

PS:我目前正在运行Linux,因此您的操作系统可能有不同的解决方案.

python text-to-speech python-2.7

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

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
查看次数