gpt4 book ai didi

twilio - 是否可以在 Twilio 群组视频中进行语音变调?

转载 作者:行者123 更新时间:2023-12-04 17:44:56 27 4
gpt4 key购买 nike

我们已经构建了一个网络应用程序。该应用程序的核心是在网络上安排 session / session 。因此,用户 A( session ​​协调员)将安排 session / session ,所有其他参与者 B、C、D 等将加入 session / session 。所以我使用了 Twilio 群组视频通话来实现它。

我有以下用例。我们想要对用户 A( session ​​协调员)的声音进行音高转换。因此,所有其他参与者都将在群组视频中接收到变调后的声音。我们已经在 Twilio 中分析了 AWS Polly,但它与我们的用例不匹配。

所以请指教Twilio中是否有任何服务可以实现这种情况。
(或者)是否可以打断 Twilio 群组通话并将变调后的语音传递给其他参与者?

使用的示例代码

initAudio();

function initAudio() {

analyser1 = audioContext.createAnalyser();
analyser1.fftSize = 1024;
analyser2 = audioContext.createAnalyser();
analyser2.fftSize = 1024;

if (!navigator.getUserMedia)
navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

if (!navigator.getUserMedia)
return(alert("Error: getUserMedia not supported!"));

navigator.getUserMedia({ audio: true }, function(stream){
gotStream(stream);
}, function(){ console.log('Error getting Microphone stream'); });

if ((typeof MediaStreamTrack === 'undefined')||(!MediaStreamTrack.getSources)){
console.log("This browser does not support MediaStreamTrack, so doesn't support selecting sources.\n\nTry Chrome Canary.");
} else {
MediaStreamTrack.getSources(gotSources);
}
}
function gotStream (stream) {
audioInput = audioContext.createMediaStreamSource(stream);
outputMix = audioContext.createGain();
dryGain = audioContext.createGain();
wetGain = audioContext.createGain();
effectInput = audioContext.createGain();
audioInput.connect(dryGain);
audioInput.connect(effectInput);
dryGain.connect(outputMix);
wetGain.connect(outputMix);
audioOutput = audioContext.createMediaStreamDestination();
outputMix.connect(audioOutput);
outputMix.connect(analyser2);
crossfade(1.0);
changeEffect();
}
function crossfade (value) {
var gain1 = Math.cos(value * 0.5 * Math.PI);
var gain2 = Math.cos((1.0 - value) * 0.5 * Math.PI);

dryGain.gain.value = gain1;
wetGain.gain.value = gain2;
}

function createPitchShifter () {
effect = new Jungle( audioContext );
effect.output.connect( wetGain );
effect.setPitchOffset(1);
return effect.input;
}

function changeEffect () {
if (currentEffectNode)
currentEffectNode.disconnect();
if (effectInput)
effectInput.disconnect();

var effect = 'pitch';

switch (effect) {
case 'pitch':
currentEffectNode = createPitchShifter();
break;
}

audioInput.connect(currentEffectNode);
}

将 Localaudiotrack 添加到房间时遇到错误

var mediaStream = new Twilio.Video.LocalAudioTrack(audioOutput.stream);

room.localParticipant.publishTrack(mediaStream, {
name: 'adminaudio'
});

错误:未捕获( promise )TypeError:无法在“MediaStream”上执行“addTrack”:参数 1 不是“MediaStreamTrack”类型。

最佳答案

此处为 Twilio 开发人员布道师。

Twilio 本身没有任何东西可以改变声音的音调。

如果您在浏览器中构建它,那么您可以使用网络音频 API 从用户的麦克风获取输入并对其进行音高转换,然后将生成的音频流而不是原始麦克风流提供给视频 API。

关于twilio - 是否可以在 Twilio 群组视频中进行语音变调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52512823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com