2018年9月19日
并不主攻android,只是為了在開發(fā)嵌入式設(shè)備時方便使用調(diào)試而開發(fā)一些自己使用的android工具而已,所以在簡書上只是記錄一些可能以后用得上的代碼,有些是之前網(wǎng)上找到比較能用的,比較早的就找不到出處了,以后還是把資料引用地址貼上來
TTS: TextToSpeech,文本轉(zhuǎn)語音功能
這里實現(xiàn)文本播報+文本轉(zhuǎn)換為wav文件
TextToSpeech textToSpeech;
textToSpeech = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.CHINA);
if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE && result != TextToSpeech.LANG_AVAILABLE) {
Toast.makeText(MainActivity.this, "暫不支持該語言", Toast.LENGTH_SHORT).show();
}
}
}
});
語音播報:
textToSpeech.speak(editText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
保存為wav文件
File sdCardDir = new File(Environment.getExternalStorageDirectory().getCanonicalPath() + "/TTStoMP3");
if (!sdCardDir.exists()) sdCardDir.mkdir(); //保存在儲存TTStoMP3目錄下
HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, editText.getText().toString());
int r = textToSpeech.synthesizeToFile(editText.getText().toString(), myHashRender, sdCardDir+"/" + editText.getText().toString() + ".wav");
if (r == TextToSpeech.SUCCESS) {
//保存成功
}else {
//保存失敗
}
最后,由于儲存路徑繼續(xù)了讀寫,所以還需要相關(guān)權(quán)限:
<!-- 在SD卡中創(chuàng)建與刪除文件權(quán)限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 向SD卡寫入數(shù)據(jù)權(quán)限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />