加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用soxlib for iOS来消除开始和结束的沉默

发布时间:2020-12-16 07:06:07 所属栏目:百科 来源:网络整理
导读:任务是从录音的开始和结束按阈值消除静音. 我使用这个sox端口到iOS. https://github.com/shieldlock/SoX-iPhone-Lib/ 我发现命令行sox工具通过以下命令完成我的任务: sox in.wav out.wav silence 1 0.1 1% reverse silence 1 0.1 1% reverse (摘自:http://
任务是从录音的开始和结束按阈值消除静音.
我使用这个sox端口到iOS.
https://github.com/shieldlock/SoX-iPhone-Lib/

我发现命令行sox工具通过以下命令完成我的任务:

sox in.wav out.wav silence 1 0.1 1% reverse silence 1 0.1 1% reverse

(摘自:http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/)

但我不能像iOS这样在iOS lib格式中翻译它:

sox_create_effect(sox_find_effect("silence"));
args[0] = "2000",assert(sox_effect_options(e,1,args) == SOX_SUCCESS);
assert(sox_add_effect(chain,e,&in->signal,&in->signal) == SOX_SUCCESS);

我需要为完成这项任务提供哪些参数?

解决方法

因为sox in.wav out.wav silence 1 0.1 1%反向静默1 0.1 1%反向是两个不同命令行的串联:

sox in.wav temp.wav silence 1 0.1 1% reverse
sox temp.wav out.wav silence 1 0.1 1% reverse

在你的链中创造两个沉默效果.一旦效果修剪文件的开头并将反向复制管道传递到临时目标,然后从temp的开头剪切下一个并将其反转回完成的目标.

但是传递什么参数(args)?免责声明:我没什么经验,不能测试这个,但我相信它应该是这些字符串:

args[1] = "1";
args[2] = "0.1";
args[3] = "1%";
args[4] = "reverse";

e = sox_create_effect(sox_find_effect("silence"));
args[0] = "2000",&inFile->signal,&tempFile->signal) == SOX_SUCCESS);
free(e);

e = sox_create_effect(sox_find_effect("silence"));
args[0] = "2000",&tempFile->signal,&outFile->signal) == SOX_SUCCESS);
free(e);

sox_flow_effects(chain,NULL,NULL);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读