下面是我的代码:
try {
_channel = IOWebSocketChannel.connect(
'wss://api.elevenlabs.io/v1/text-to-speech/$voiceId/stream-input?model_id=$model');
_channel!.stream.listen(
(data) async {
final response = jsonDecode(data);
if (response['audio'] != null) {
try{
final audioChunk = response['audio'] as String;
final uint8List = Uint8List.fromList(base64.decode(audioChunk));
await _audioPlayer.setAudioSource(
ConcatenatingAudioSource(
children: [
AudioSource.uri(
Uri.dataFromBytes(
uint8List,
mimeType: 'audio/mpeg',
),
),
],
),
);
await _audioPlayer.play();
}
catch (e){
print("Error setting audio source and playing: $e");
}
我能够得到响应,并将其转换为uint 8List,并试图播放它,但它没有播放任何东西,我得到错误:
flutter:设置音频源和播放时出错:(-11828)无法打开扑动:设置音频源和播放时出错:MissingPluginException(No implementation found for method load on channel com.ryanheise.just_audio.methods.abaa9b2-f8ed-4c88-9d89-4623ab523beb)flutter:设置音频源和播放时出错:(-11828)无法打开
我该怎么玩?有没有其他软件包可以做到这一点?我成功地得到了回应,但我只是不能发挥它
1条答案
按热度按时间g52tjvyc1#
这个例子来自just_audio自述文件:
您可以定义自己的
StreamAudioSource
的自定义子类,将音频数据提供给just_audio。由于返回的StreamAudioResponse
的一部分是一个流,您可以将WebSocket流转换并重定向到这个StreamAudioResponse
。因此,而不是:你可以使用类似的东西:
由于这个音频源会连续地将音频数据流传输到just_audio,因此只需调用
setAudioSource
一次,而不会重复。