Возможно ли сделать смещение голоса в видео группы Twilio? - PullRequest
0 голосов
/ 26 сентября 2018

Мы создали веб-приложение.Суть приложения заключается в организации встреч / сессий в Интернете.Таким образом, пользователь A (координатор собрания) организует собрание / сессию, а все остальные участники B, C, D и т. Д. Присоединяются к совещанию / сеансу.Поэтому я использовал групповой видеозвонок Twilio для достижения этой цели.

У меня есть приведенный ниже вариант использования.Мы хотим сделать смещение высоты тона голоса пользователя А (координатора собрания).Таким образом, все остальные участники будут получать голос со сдвигом высоты тона в групповом видео.Мы проанализировали AWS Polly в Twilio, но он не соответствует нашему варианту использования.

Так что, пожалуйста, посоветуйте, есть ли какие-либо услуги в 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'
});

ОШИБКА: Uncaught (в обещании) TypeError: Не удалось выполнить addTrack для MediaStream: параметр 1 не относится к типу MediaStreamTrack.

1 Ответ

0 голосов
/ 27 сентября 2018

Евангелист разработчиков Twilio здесь.

В самом Twilio нет ничего, что могло бы изменить голос.

Если вы создаете это в браузере, то вы можете использовать Web Audio API длявход от микрофона пользователя и сдвиг его высоты тона, а затем предоставить результирующий аудиопоток в API видео вместо исходного микрофонного потока.

...