如何用 JavaScript 改变音高?

chi*_*ion 6 html javascript audio pitch html5-audio

让\xe2\x80\x99s 假设你有一个名为的音频变量audio并且它存储声音。

\n\n

我知道如何改变速度,例如:

\n\n
audio.playBackRate = 2; \n
Run Code Online (Sandbox Code Playgroud)\n\n

但我不知道如何改变音调。

\n\n

是否有一个audio.pitch属性或者我必须自己创建它?

\n\n

我想做这样的事情:

\n\n
var audio = new Audio();\naudio.src = "sound_effect.wav";\naudio.pitch = 2 //doubling the pitch but there is no pitch attribute\naudio.play();\n
Run Code Online (Sandbox Code Playgroud)\n

Mar*_*ius 0

我认为您需要使用一个库将音调变换应用于您的音频信号。您可以使用Tone.js PitchShift。请参阅GitHub 用户 Jexim 的JSFiddle了解工作示例。我从下面的小提琴中复制粘贴了最重要的部分:

JavaScript:

var player = new Tone.Player("http://example.com/my-audiofile.mp3").sync().start(0);

var pitchShift = new Tone.PitchShift({
    pitch: -5
}).toMaster();

player.connect(pitchShift);

Tone.Buffer.on('load', () => {
    alert('Ready for play');
});

window.play = function() {
    Tone.Transport.start();
}
Run Code Online (Sandbox Code Playgroud)

HTML

<script src="https://unpkg.com/tone@next/build/Tone.js"></script>
<button onclick="play()">Play</button>
Run Code Online (Sandbox Code Playgroud)