gpt4 book ai didi

c# - 为机器人语音C#乘以音频信号

转载 作者:行者123 更新时间:2023-11-30 18:34:00 26 4
gpt4 key购买 nike

我正在尝试获取 .NET SpeechSynthesizer 的波形输出,使声音听起来像机器人。

经过一些研究,我发现环形调制可能是获得我想要的效果的不错选择。我已经看到公式基本上是 Result(t) = Voice(t) * SineWave(t)

不过,我不知道如何从 Wave Stream 应用这种效果,是否有任何库可以:

  • 生成正弦波并将其处理成 Wave Stream
  • 将两个流相乘以获得结果

如果没有,您知道其他选择吗?也许我可以将 Voice Wave Stream 中的每个样本乘以正弦波中的每个样本?

我正在使用 C#/.net 框架。

谢谢!

编辑: 好吧,经过几个小时的失败尝试,我终于想出了一个看起来不错的结果。唯一的问题是输出中有很多噼啪声,我发现的唯一解决方法是应用低通滤波器。

这是我到目前为止所得到的(快速、肮脏且未注释的代码,但应该是不言自明的):

class Mixer
{
public static Stream RingModulation(Stream voiceStream, TimeSpan duration, SpeechAudioFormatInfo format)
{
var sineWave = SineOscillator.GenerateWave(duration, 80, 1, format);
var numSamples = Convert.ToInt32(duration.TotalSeconds * format.SamplesPerSecond);
var dataStream = new MemoryStream();

sineWave.Position = 0;
voiceStream.Position = 0;

var buf1 = new byte[2];
var buf2 = new byte[2];
for (var i = 0; i < numSamples; i++)
{
voiceStream.Read(buf1, 0, 2);
sineWave.Read(buf2, 0, 2);

var data = BitConverter.GetBytes(Convert.ToInt16(BitConverter.ToInt16(buf1, 0) * BitConverter.ToInt16(buf2, 0)));
dataStream.Write(data, 0, data.Length);
}

return dataStream;
}
}

class SineOscillator
{
public static Stream GenerateWave(TimeSpan duration, double frequency, int amplitude, SpeechAudioFormatInfo format)
{
var numSamples = Convert.ToInt32(duration.TotalSeconds * format.SamplesPerSecond);
var dataStream = new MemoryStream();
var angle = (Math.PI * 2 * frequency) / (format.SamplesPerSecond * format.ChannelCount);

for (var i = 0; i < numSamples; i++)
{
var data = BitConverter.GetBytes(Convert.ToInt16(amplitude * Math.Sin(angle*i)));
// Generate a sine wave in both channels.
dataStream.Write(data, 0, data.Length);
}

return dataStream;
}
}

虽然尚未应用低通滤波器,但问题仍然存在,以防有人提供好的答案和/或更好的方法:)

最佳答案

我从事音频处理工作了一段时间。产生某种“机器人效应”的另一种方法是重复相同的频率几毫秒,而不是拥有平滑的曲线。

取一个区间的频率值
平均数值
将整个时间间隔的平均值写入输出缓冲区

有不同的“机器人效果”听起来不一样,这听起来不像 Optimus Prime,但很明显是计算机生成的

关于c# - 为机器人语音C#乘以音频信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635409/

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