话本小说网 > 现代小说 > 生产资料共享契约书
本书标签: 现代 

多人混合配音代码

生产资料共享契约书

那这种模式能够完成多个中文发音人物的插入吗?包括多个英文发音人物的插入。用#命令来分割他们的文本块。分别为每个发音人物的文本块生成不同的音频再合并起来。每个#命令和角色名起到分割文本块的作用。用户可以手动排列发音人物的发音先后顺序

是的,该模式可以完成多个中文发音人物和多个英文发音人物的插入。以下是一个示例,展示了如何实现这个功能:

1. 在合并音频文件之前,我们需要为每个角色生成对应的语音文件。这里假设我们有三个角色,分别是角色1(中文)、角色2(中文)和角色3(英文)。

2. 修改`onClick`方法中的代码,如下所示:

```java

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String text = editText.getText().toString();

if (text.trim().length() == 0) {

Toast.makeText(MainActivity.this, "请输入文本", Toast.LENGTH_SHORT).show();

return;

}

//角色1(中文)

String role1Text = text.replaceAll("role1", "");

TextPlayer role1TextPlayer = (TextPlayer) PlayerFactory.createPlayer(TextPlayer.class);

role1TextPlayer.setSpeed(1.0f);

role1TextPlayer.setLanguage("zh-CN");

role1TextPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@Override

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

SpeechPlayer role1SpeechPlayer = (SpeechPlayer) PlayerFactory.createPlayer(SpeechPlayer.class);

role1SpeechPlayer.setSpeed(1.0f);

role1SpeechPlayer.setLanguage("zh-CN");

role1SpeechPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@Override

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

role1TextPlayer.playAsyn(role1Text);

role1SpeechPlayer.playAsyn(role1Text);

//角色2(中文)

String role2Text = text.replaceAll("role2", "");

TextPlayer role2TextPlayer = (TextPlayer) PlayerFactory.createPlayer(TextPlayer.class);

role2TextPlayer.setSpeed(1.0f);

role2TextPlayer.setLanguage("zh-CN");

role2TextPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@Override

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

SpeechPlayer role2SpeechPlayer = (SpeechPlayer) PlayerFactory.createPlayer(SpeechPlayer.class);

role2SpeechPlayer.setSpeed(1.0f);

role2SpeechPlayer.setLanguage("zh-CN");

role2SpeechPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@Override

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

role2TextPlayer.playAsyn(role2Text);

role2SpeechPlayer.playAsyn(role2Text);

//角色3(英文)

String role3Text = text.replaceAll("role3", "");

TextPlayer role3TextPlayer = (TextPlayer) PlayerFactory.createPlayer(TextPlayer.class);

role3TextPlayer.setSpeed(1.0f);

role3TextPlayer.setLanguage("en-US");

role3TextPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@```

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

SpeechPlayer role3SpeechPlayer = (SpeechPlayer) PlayerFactory.createPlayer(SpeechPlayer.class);

role3SpeechPlayer.setSpeed(1.0f);

role3SpeechPlayer.setLanguage("en-US");

role3SpeechPlayer.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

```

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

@Override

public void onPlayComplete() {

}

@Override

public void onStop() {

}

@Override

public void onError(SpeechError error) {

}

@Override

public void onClose() {

}

});

role3TextPlayer.playAsyn(role3Text);

role3SpeechPlayer.playAsyn(role3Text);

//等待语音播放完成

while (role1TextPlayer.getStatus() != PlayerStatus.Status_Stopped || role1SpeechPlayer.getStatus() != PlayerStatus.Status_Stopped || role2TextPlayer.getStatus() != PlayerStatus.StatusStopped || role2SpeechPlayer.getStatus() != PlayerStatus.Status_Stopped || role3TextPlayer.getStatus() != PlayerStatus.StatusStopped || role3SpeechPlayer.getStatus() != PlayerStatus.Status_Stopped) {Thread.sleep(100);

}

//合并语音

Merger merger = new Merger();

merger.setTargetSampleRate(16000);

merger.setPlayListener(new IPlayer.PlayListener() {

@Override

public void onPlayBegin() {

}

@Override

public void onBufferingBegin() {

}

@Override

public void onBufferingProgress(int percent) {

}

@Override

public void onPlaying(byte[] data, int offset, int length) {

}

生产资料共享契约书最新章节 下一章 多人混合配音代码