0

我正在尝试使用 sox 库在两个音频文件之间进行格式转换。我可以通过库提供的 API 在不更改参数的情况下将一个转换为另一个。就像执行命令的过程一样:sox a.wav b.ul 现在我遇到的问题是如何在转换时更改采样率音频文件。请帮我一把!谢谢!

4

2 回答 2

0

rate效果用于重采样。有关如何将其与库 API 一起使用的示例,请参见SoX git 存储库中的src/example3.c 。(你应该确保使用当前 git 中的 example3.c,因为最近发布的版本是错误的。)

于 2013-05-29T09:51:24.367 回答
0

非常感谢。在阅读了examples3.c和一些测试之后,我找到了解决我的问题的方法。要在转换时更改采样率,只需在转换代码中添加两个步骤:

......
out->signal.channels = 1    //change the channel of outfile to 1
......
//add the effect of "rate", which means samples rates
e = sox_create_effect(sox_find_effect("rate"));
args[0] = "8000", assert(sox_effect_options(e, 1, args) == SOX_SUCCESS);
assert(sox_add_effect(chain, e, &in->signal, &out->signal) == SOX_SUCCESS);
free(e);
......

我通过这种方式成功更改了采样率。改变渠道也是如此。希望它可以帮助别人。再次感谢chirlu~

于 2013-06-14T09:40:08.363 回答