首页 版块 访问AI主站 注册 发帖
tel28810
2
积分 积分商城
0
获赞
如何使用onSynthesizeDataArrived来进行缓存并实现后期播放?
Ta的回复 :    private void playAudioTrack() throws IOException {         int frequence = 16000;         int channelConfig = AudioFormat.CHANNEL_OUT_MONO;         int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;         int streamType = AudioManager.STREAM_MUSIC;         int bufferSize = AudioTrack.getMinBufferSize(frequence, channelConfig, audioEncoding);         byte[] buffer = new byte[bufferSize / 4];         File file = new File(audioPath, "0.pcm");         FileInputStream is = new FileInputStream(file);         DataInputStream dis = new DataInputStream(new BufferedInputStream(is));         AudioTrack track = new AudioTrack(streamType, frequence, channelConfig, audioEncoding, bufferSize,                 AudioTrack.MODE_STREAM);         track.setPlaybackRate(frequence);         /* start play */         track.setStereoVolume(1.0f, 1.0f);         track.play();         while (dis.available() > 0) {             int i = 0;             while (dis.available() > 0 && i < buffer.length) {                 buffer[i] = dis.readByte();                 i++;             }             /*write data to AudioTrack*/             track.write(buffer, 0, buffer.length);         }         /*stop play*/         track.stop();         dis.close();     }
5
如何使用onSynthesizeDataArrived来进行缓存并实现后期播放?
Ta的回复 :    public void onSynthesizeStart(String utteranceId) {         toPrint("onSynthesizeStart utteranceId=" + utteranceId);         prepareLocalfile(utteranceId);     }     public void onSynthesizeDataArrived(String utteranceId, byte[] data, int progress) {         if (null != data) {             appendLocalfileSection(data);         }     }     public void onSynthesizeFinish(String utteranceId) {         toPrint("onSynthesizeFinish utteranceId=" + utteranceId);         endLocalFileData();     }     private void prepareLocalfile(String utteranceId) {         String fileName = utteranceId + ".pcm";         File folder = new File(audioPath);         if (!folder.exists()) {/* 判断文件夹是否存在(不存在则创建这个文件夹) */             toPrint("create dir " + audioPath);             folder.mkdirs();/* 创建文件夹 */         }         try {             File file = new File(audioPath, fileName);             toPrint("create file " + audioPath + "/" + fileName);             FileOutputStream outSTr = new FileOutputStream(file);             Buff = new BufferedOutputStream(outSTr);         } catch (IOException e) {             e.printStackTrace();         }     }     private void appendLocalfileSection(byte[] buffer) {         try {             Log.i(TAG, String.valueOf(buffer));             Buff.write(buffer);         } catch (IOException e) {             e.printStackTrace();         }     }     private void endLocalFileData() {         try {             toPrint("close file.");             Buff.flush();             Buff.close();         } catch (IOException e) {             e.printStackTrace();         }     }
5
切换版块
智能客服