-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请问有C#的实现吗 #3
Comments
我们使用静态输入形状,例如一个5120的 音频切片部分代码if audio_len > INPUT_AUDIO_LENGTH:
if (shape_value_in != shape_value_out) & isinstance(shape_value_in, int) & isinstance(shape_value_out, int):
stride_step = shape_value_out
num_windows = int(np.ceil((audio_len - INPUT_AUDIO_LENGTH) / stride_step)) + 1
total_length_needed = (num_windows - 1) * stride_step + INPUT_AUDIO_LENGTH
pad_amount = total_length_needed - audio_len
final_slice = audio[:, :, -pad_amount:]
white_noise = (np.sqrt(np.mean(final_slice * final_slice)) * np.random.normal(loc=0.0, scale=1.0, size=(1, 1, pad_amount))).astype(audio.dtype)
audio = np.concatenate((audio, white_noise), axis=-1)
elif audio_len < INPUT_AUDIO_LENGTH:
white_noise = (np.sqrt(np.mean(audio * audio)) * np.random.normal(loc=0.0, scale=1.0, size=(1, 1, INPUT_AUDIO_LENGTH - audio_len))).astype(audio.dtype)
audio = np.concatenate((audio, white_noise), axis=-1)
aligned_len = audio.shape[-1] 说明
注意我们对C#不太熟悉,因此对于从Python到C#的代码转换,您可以考虑使用GPT或其他代码转换工具。 |
好的,感谢,我现在遇到的问题是在傅里叶转行和onnxruntime input参数的构建上 |
欢迎使用我们的仓库来导出ONNX模型,其中模型包括 STFT 和 ISTFT。只需传入 int16 PCM 音频样本,即可获得 int16 降噪后的音频样本作为输出。 |
感谢,我试试,我之前好像看到过你把导出的onnx模型放在google网盘上了可以直接下载,下载后可以直接使用是吧 |
是的,这是一个用于演示的模型,输入是固定形状,可以使用 |
演示的模型跟这里的https://www.modelscope.cn/models/iic/speech_zipenhancer_ans_multiloss_16k_base/files |
演示模型以每chunk 320 毫秒的方式处理音频,然后将每块拼接起来重建去噪后的音频。虽然这会稍微影响音质,但输出几乎与原始模型相同。你可以先尝试一下,然后再决定是否导出你自己的模型。增大chunk size可以更加接近原始模型音质,但会增加处理时间。 |
好的,感谢你的及时回复 |
这是原始的噪音文件https://oss-audio-recording.oss-cn-shenzhen.aliyuncs.com/audio/20240516174526.wav |
实际上,代码的第一行是用于进行 float32 转换。我们已将您的文件传递给官方的演示程序,您可以比较两者的结果。毫无疑问,官方版本的性能确实优于我们的实现。不过,正如我们之前提到的,差异并不是特别显著。如果您对差异感到难以接受,建议尝试使用更大的块大小,例如 16000,这样结果会更加接近原始版本。
这是基于最新导出代码并将块大小设置为 16,000 的测试结果。 |
iic/speech_zipenhancer_ans_multiloss_16k_base这个模型的降噪效果还不错
请问有C#的实现吗,或者有没有实现思路?
我自己用C#onnxruntime调用model.onnx(https://www.modelscope.cn/models/iic/speech_zipenhancer_ans_multiloss_16k_base/file/view/master?fileName=README.md&status=1)这里下载下来的模型,提示需要分配超大内存,请问你python是怎么解决的
[E:onnxruntime:, sequential_executor.cc:514 ExecuteKernel] Non-zero status code returned while running MatMul node. Name:'/model/TSConformer/0/0/self_attn_weights_1/MatMul' Status Message: /onnxruntime_src/onnxruntime/core/framework/bfc_arena.cc:376 void* onnxruntime::BFCArena::AllocateRawInternal(size_t, bool, onnxruntime::Stream*, bool, onnxruntime::WaitNotificationFn) Failed to allocate memory for requested buffer of size 515293323776,
The text was updated successfully, but these errors were encountered: