Я работаю над приложением Android, которое использует в речи когнитивный текст Microsoft.но у меня возникают проблемы с воспроизведением выводимого звука, потому что я не знаю, как сохранить аудиофайл на моем компьютере / устройстве.
Я искал много решений, но большинство из них предлагают использовать synthesizetofile (), который* не поддерживается для Microsoft.
import android.app.AlertDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import com.microsoft.speech.tts.Synthesizer;
import com.microsoft.speech.tts.Voice;
public class MainActivity extends AppCompatActivity {
private Synthesizer m_syn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (getString(R.string.api_key).startsWith("Please")) {
new AlertDialog.Builder(this)
.setTitle(getString(R.string.add_subscription_key_tip_title))
.setMessage(getString(R.string.add_subscription_key_tip))
.setCancelable(false)
.show();
} else {
if (m_syn == null) {
// Create Text To Speech Synthesizer.
m_syn = new Synthesizer(getString(R.string.api_key));
}
Toast.makeText(this, "If the wave is not played, please see the log for more information.", Toast.LENGTH_LONG).show();
m_syn.SetServiceStrategy(Synthesizer.ServiceStrategy.AlwaysService);
Voice v = new Voice("en-US", "Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)", Voice.Gender.Female, true);
//Voice v = new Voice("zh-CN", "Microsoft Server Speech Text to Speech Voice (zh-CN, HuihuiRUS)", Voice.Gender.Female, true);
m_syn.SetVoice(v, null);
// Use a string for speech.
m_syn.SpeakToAudio(getString(R.string.tts_text));
// Use SSML for speech.
String text = "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" xmlns:mstts=\"http://www.w3.org/2001/mstts\" xml:lang=\"en-US\"><voice xml:lang=\"en-US\" name=\"Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)\">You can also use SSML markup for text to speech.</voice></speak>";
m_syn.SpeakSSMLToAudio(text);
findViewById(R.id.stop_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
m_syn.stopSound();
}
});
findViewById(R.id.play_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
m_syn.SpeakToAudio(getString(R.string.tts_text));
}
});
}}}
Любое предложение или совет очень ценится