总的来说,我对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)
这是我的问题.
顺便说一句,这是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) 我正在研究flashcard程序的文本到语音的实现.应该读出不同语言的文本.为了正确地执行此操作,用户必须选择要读取的文本的语言(将在以后存储和使用,无需问题).
是否有可能在Android系统上获取可用的TTS语言?如果没有,是否有可能在系统上获得所有可用的区域设置?
我想,我知道了:getAvailableLocales()和tts.isLocaleAvailable(locale)
我有一个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
大多数人可能都知道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
我试图在文本的开头和结尾调用一些方法,所以我使用了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) 我试图让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中单个元素的可访问性(对话)的最佳方法吗?
我有一个TextView,我以编程方式将contentDescription设置为nil,并且它保持对话说出标题,但是当浏览视图时它仍然停在该textview上......它只是保持沉默.
我的目标是让对话完全忽略TextView的存在.
请帮忙!
谢谢 :)
我正在尝试创建一个人工智能程序(没什么大不了或特别的)我希望它有一个声音(谁不会?).我已经研究过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,因此您的操作系统可能有不同的解决方案.
我是第一次学习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
text-to-speech ×10
android ×6
asp.net-mvc ×1
c# ×1
complete ×1
espeak ×1
java ×1
listener ×1
locale ×1
python ×1
python-2.7 ×1
ssml ×1
talkback ×1
voice ×1