我的理解是,这个X-SAMPA XML样本,就像这里的其他样本一样,甚至在这里和这里,都应该听起来像是什么.
String text = "<speak xml:lang=\"en-US\"> <phoneme alphabet=\"xsampa\" ph=\"faIv\"/>.</speak>";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);
Run Code Online (Sandbox Code Playgroud)
然而,由于一些奇怪的原因,它没有说什么(完全沉默).
我错过了什么?
为了澄清:我的TTS示例应用程序设置正常:如果我.在该</speak>标记之前将其更改为任何单词,Android TTS只是说这个单词很好.我唯一的问题是我无法以<phoneme alphabet=\"xsampa\" ph=\"faIv\"/>任何方式利用它.
我知道a .应该是静默的,但根据这些样本的海报,它应该是XML中的XSAMPA音素.我错过了什么?
我在这里开发一个非常简单的应用程序.这是我脑性麻痹的女儿.这只是一个很大的YES和NO按钮,所以她可以在要求时按下它们.
嗯......我正在使用SVOX经典TTS引擎.
一切顺利,直到我的平板电脑升级到ICS.现在,每次我运行应用程序时,都会打开市场,要求我安装TTS.我点击"回"然后,我的应用说话.这非常烦人.
以下是Google API所说的内容:
*成功检查将由CHECK_VOICE_DATA_PASS结果代码标记,表示在创建TextToSpeech对象后,此设备已准备好发言.如果没有,我们需要让用户知道安装设备成为多语言对话机所需的数据!下载和安装数据是通过触发ACTION_INSTALL_TTS_DATA意图完成的,该意图将用户带到Android Market,并让她/他启动下载.下载完成后,将自动安装数据.以下是onActivityResult()实现的示例:*
这是我的代码:
public class yesOunoActivity extends Activity implements OnInitListener{
ImageView yes;
ImageView no;
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
tts = new TextToSpeech(this, this);
setContentView(R.layout.yesorno);
yes = (ImageView) findViewById(R.id.yes);
no = (ImageView) findViewById(R.id.no);
yes.setClickable(true);
yes.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent arg1) {
if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {
tts.speak("yes!", TextToSpeech.QUEUE_ADD, null);
}
return true; …Run Code Online (Sandbox Code Playgroud) 我对Windows中的文本到语音技术感到困惑.我有一个稍微特殊的要求:我需要使用System.Speech程序集从Win 7中运行的.net程序输出语音.我想要一个好的,机器人的声音,没有像微软安娜那样强烈的美国口音.
哪个第三方声音适用于.net api?有谁知道一个好的英国(但不是太英国)的声音,最好免费或便宜?
我正在使用(非官方)谷歌翻译TTS api来检索mp3以支持残疾学习者阅读网页.一切正常,但我们有美国口音(我们在英国!).然而,当我使用Google翻译时,它会以英国口音取出mp3 - 我该如何调用此行为?
我使用了相同的GET请求URL,所以我可以假设它不是这样的:
http://translate.google.com/translate_tts?q=testing+1+2+3&tl=en
Run Code Online (Sandbox Code Playgroud)
(我玩过其他语言代码(en-gb)但没有运气 - 但是对于法语来说却很有用.)
非常感谢
我正在开发我正在使用文本到语音转换的android应用程序.当我打开应用程序运行文本到语音转换时,我需要什么.完成后我想做点什么.我的代码看起来像
public class Mainactivity extends Activity implements OnInitListener, OnUtteranceCompletedListener{
private static int REQ_CODE = 1;
private TextToSpeech tts = null;
private boolean ttsIsInit = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startTextToSpeech();
}
private void startTextToSpeech() {
Intent intent = new Intent(Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, REQ_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE) {
if (resultCode == Engine.CHECK_VOICE_DATA_PASS) {
tts = new TextToSpeech(this, this);
}
else {
Intent installVoice = new Intent(Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installVoice);
} …Run Code Online (Sandbox Code Playgroud) 此问题仅适用于Android 2.2:
以下屏幕截图显示了安装的3种不同的文本到语音引擎:
在此屏幕截图中,您可以看到并非所有3都已选中(已启用).相反,IVONA未经检查,仅留下Pico(暗示,因为它是硬编码的)和SVOX(已检查).

我希望能够以编程方式从我的应用程序查询特定的TTS引擎(如IVONA)是否被选中(假设我知道在编码时的包名,当然).
在安卓2.2所有我是getDefaultEngine()不能在一个情况下真正帮助碧被选定为默认和SVOX检查(换句话说,我怎么知道SVOX如果被选中的Pico是默认?)
如何在Android 2.2中实现这一目标?
这是可能吗?
PS Android 4.x(API> = 14)引入了getEngines(),这可能会让您相信ICS +已经解决了这个问题,但仔细研究后发现:
我正在尝试使用Android Text To Speech讲出大量文本.我使用默认的Google语音引擎.以下是我的代码.
public class Talk extends Activity implements TextToSpeech.OnInitListener {
private ImageView playBtn;
private EditText textField;
private TextToSpeech tts;
private boolean isSpeaking = false;
private String finalText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_talk);
//Intialize the instance variables
playBtn = (ImageView)findViewById(R.id.playBtn);
textField = (EditText)findViewById(R.id.textField);
//Resister the listeners
playBtn.setOnClickListener(new PlayBtnAction());
//Other things
tts = new TextToSpeech(this,this);
//Get the web page text if called from Share-Via
if (Intent.ACTION_SEND.equals(getIntent().getAction()))
{
new GetWebText().execute("");
}
}
//This class will execute the text …Run Code Online (Sandbox Code Playgroud) 我已经在我的应用程序中实现了文本到语音,它可以正常使用我目前使用的代码.基本上算法创建文本,然后如果用户点击UIButton,则说出文本.
挑战:我想启用相同的UIButton来暂停合成器,如果按钮已经被轻敲(即当前正在说话文本),然后如果再次点击按钮则继续说话停止.
我知道AVFoundation Reference中有一些函数,但我无法正确实现它们.
有谁知道如何在Swift中这样做?
import UIKit
import AVFoundation
@IBOutlet var generatedText: UILabel!
@IBAction func buttonSpeakClicked(sender: UIButton){
var mySpeechSynthesizer:AVSpeechSynthesizer = AVSpeechSynthesizer()
var mySpeechUtterance:AVSpeechUtterance = AVSpeechUtterance(string:generatedText.text)
mySpeechUtterance.rate = 0.075
mySpeechSynthesizer .speakUtterance(mySpeechUtterance)
}
Run Code Online (Sandbox Code Playgroud) 使用javascript Speech Synthesis API,您可以让浏览器说出一些文字:
var message = new SpeechSynthesisUtterance('foo bar');
speechSynthesis.speak(message);
Run Code Online (Sandbox Code Playgroud)
但是,除了说出制作的音频之外,我还想做点什么.
是否有可能以某种方式将SpeechSynthesisUtterance转换为音频blob?
获取"所有"AVSpeechSynthesisVoice对象列表的标准方法是要求它:
[AVSpeechSynthesisVoice speechVoices]
Run Code Online (Sandbox Code Playgroud)
但是,这仅显示每个语言区域对的唯一默认语音.例如,对于en-US:
"Language: en-US, Name: Samantha, Quality: Default",
Run Code Online (Sandbox Code Playgroud)
如果我查看常规→辅助功能→语音→语音→英语下的设置应用程序,我看到我选择了'Siri Female(增强版)',但该语音无法从代码中选择.完整列表是

所以最大的问题是:如何从代码中选择Alex或Siri Female作为声音?
text-to-speech ×10
android ×5
.net ×1
android-4.0-ice-cream-sandwich ×1
avfoundation ×1
callback ×1
cocoa ×1
eclipse ×1
ios ×1
java ×1
javascript ×1
sapi ×1
speech ×1
ssml ×1
swift ×1