我正在使用NAudio DLL,我正在寻找音调转换声音的示例代码.
一点背景:
人们喜欢游戏.
人们使用互联网.
互联网需要游戏.
游戏使用声音.
HTML5有<audio>.
好的,到目前为止一切都很好.
最近我发现 - 令我惊讶的是 - IE9实际上支持playbackRate.我急切地尝试了一下.更令人惊讶的是,它确实奏效了.我在Chrome中尝试过相同的功能,虽然它有效,但是当我设置它时它却非常光滑0.5.我已经放弃了Firefox,因为它不支持MP3.
继续,这是我的问题:IE和Chrome都会在更改playbackRate时应用音高修正.IE做得很好,Chrome做得很糟糕.无论哪种方式,我都不希望这样,我希望声音改变音高.有了这种力量,我可以删除650个文件,我必须在程序上生成一个备用音高,并且我的项目将拥有更多的自由.哎呀,如果我真的想,我甚至可以在HTML5中创建一个MOD轨道播放器(减去效果频道).
那么,HTML5规范中是否有任何内容允许我关闭音高修正,并且只是播放声音就好像样本已经被挤压在一起挤压了一样?
我正在使用Swift在OSX上开发音频效果应用程序,我对集成音高效果感兴趣.
我希望能够实时地将音调调高或调高八度.目前我只收到一个干燥的信号.
我不确定这是否可行,并且想知道这是否可能,或者任何人可能有任何帮助或建议.
与该问题相关的当前代码如下:
import Cocoa
import AVFoundation
class ViewController: NSViewController {
var engine = AVAudioEngine()
var timePitch = AVAudioUnitTimePitch()
override func viewDidLoad() {
timePitch.pitch = 1200
// Setup engine and node instances
var mixer = engine.mainMixerNode
var input = engine.inputNode
var output = engine.outputNode
var format = input.inputFormatForBus(0)
var error:NSError?
engine.attachNode(timePitch)
engine.connect(input, to: timePitch, format: format)
engine.connect(timePitch, to: output, format: format)
engine.startAndReturnError(&error)
super.viewDidLoad()
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
} …Run Code Online (Sandbox Code Playgroud) 我可以使用resample调整整个信号,我 在这里尝试了相位声码器代码.
我也试过了repmat和插值,我看了fft和interp1
如何随时间递增/逐渐改变信号的音高? 我已经包含了原始信号的示例以及我正在尝试使处理信号听起来像(我使用Audacity创建处理后的信号并使用它们的效果Sliding time scale / pitch shift)但是想在Octave 4.0中创建此信号.如果您收听已处理信号,您可以听到文件的音高逐渐增加,但文件长度与原始信号文件的长度相同(秒).
我正在使用Octave 4.0,就像Matlab一样
这里的代码可以改变整个信号的音高,并在几秒钟内保持原始信号的相同长度,但我不知道如何逐渐改变信号的音高.谢谢rayryeng让我这么远.
clear, clc
[ya, fs, nbitsraw] = wavread('/tmp/original_signal.wav');
num_per_sec=2.4; %// Define total number of times we see the signal
%// Get total number of integer times we see the signal
num_whole = floor(num_per_sec);
%// Replicate signal
yb=repmat(ya,num_whole,1);
%// Determine how many samples the partial signal consists of
portion = floor((num_per_sec - num_whole)*length(ya)); …Run Code Online (Sandbox Code Playgroud) YouTube 可以选择更改视频的播放速度,从而加快或减慢视频的音频而不影响其音高。我知道有许多不同的算法可以做到这一点,但我很好奇Youtube 使用哪种特定算法,因为它似乎工作得相当好。
另外,有没有实现这个算法的开源库?
我目前正在尝试使用此算法对波形文件进行音高变换
https://sites.google.com/site/mikescoderama/pitch-shifting
这里我的代码使用上面的实现,但没有运气.输出的wave文件似乎已损坏或无效.
代码非常简单,除了音高变换算法:)
我错过了什么吗?
static void Main(string[] args)
{
// Read the wave file data bytes
byte[] waveheader = null;
byte[] wavedata = null;
using (BinaryReader reader = new BinaryReader(File.OpenRead("sound.wav")))
{
// Read first 44 bytes (header);
waveheader= reader.ReadBytes(44);
// Read data
wavedata = reader.ReadBytes((int)reader.BaseStream.Length - 44);
}
short nChannels = BitConverter.ToInt16(waveheader, 22);
int sampleRate = BitConverter.ToInt32(waveheader, 24);
short bitRate = BitConverter.ToInt16(waveheader, 34);
// Normalized data store. Store values in the format -1.0 …Run Code Online (Sandbox Code Playgroud) 我是初学者学习javascript.我的网站上有一个与微调频率和行星频率相关的交互式页面,我有各种各样的项目.我需要能够在循环中播放我的音频样本.wav文件,但是音频样本的时间延长与音调的相应变化.
我试过myAudio.playbackRate = 0.5;播放音频0.5慢,但保持音高相同.我研究并找到了一些东西.但是我如何设置preservesPitch为假或真?这只适用于'谷歌Chrome'我认为,所以我找到的其他程序在这里:https:
//github.com/janesconference/KievII/blob/master/dsp/pitchshift.js
似乎无法让它工作,我不知道我应该如何修改它,我在哪里粘贴我的音频.wav文件URL在程序中?任何其他与此相关的提示将非常感激.在此先感谢您的时间和帮助.
这个旧线程似乎表明 pydubAudioSegment._data可用于以某种方式计算声音的音高;不幸的是,这似乎是使用分配给未公开类的方法来完成的Mpm。然而,也就是说,如果可以从 中提取音高数据AudioSegment._data,那么有没有办法使用 pydubAudioSegment向上或向下移动 的音高?如果没有,是否有另一个 Python 2.7 库可以?
我尝试使用librosa 中的librosa 和pitch_shift。我录制了一些声音并使用了以下代码:
sampling_rate= 44100
y, sr = librosa.load(directory, sr=sampling_rate) # y is a numpy array of the wav file, sr = sample rate
y_shifted = librosa.effects.pitch_shift(y, sr, n_steps=4, bins_per_octave=24) # shifted by 4 half steps
librosa.output.write_wav(directory, y_shifted, sr=sampling_rate, norm=False)
Run Code Online (Sandbox Code Playgroud)
它工作得很好 - 几乎。
我在新声音中听到一些噪音(在变调之后)
有什么我需要使用的东西吗?
不带平移:
https://vocaroo.com/i/s1qEEDvzcUHN
使用平移(n_steps = 4):
我想在 Javascript 中对音频进行音调,我认为最简单的方法是 Tone.js ( https://tonejs.github.io/docs/r13/PitchShift ),但我的实现没有播放任何声音,但没有错误. 我究竟做错了什么?
HTML(加载音频文件)
<html>
<div id="wrapper">
<button onclick="loadTheTrack()"></button>
</div>
<script src="Tone.js"></script>
<script src="seebelow.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)
Javascript
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
Tone.setContext(audioCtx);
var audioDatas=[];
function loadTheTrack() {
var input = document.createElement('input');
input.type = 'file';
input.style = "display:none";
input.onchange = function (e) {
var file = e.target.files[0];
console.log(file);
var reader = new FileReader();
reader.onload = function () {
console.log("decoding audio data with" + this.result);
audioCtx.decodeAudioData(this.result, (decodedData) => {
// note: …Run Code Online (Sandbox Code Playgroud) pitch-shifting ×11
audio ×5
javascript ×3
pitch ×3
html5-audio ×2
python ×2
.net ×1
android ×1
audio-player ×1
audiocontext ×1
avfoundation ×1
c# ×1
fft ×1
html5 ×1
librosa ×1
matlab ×1
naudio ×1
octave ×1
playback ×1
pydub ×1
python-2.7 ×1
swift ×1
tone.js ×1
wav ×1
youtube ×1