首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我希望FFmpeg在检测到低于阈值的静音时,停止录制麦克风。

我希望FFmpeg在检测到低于阈值的静音时,停止录制麦克风。
EN

Ask Ubuntu用户
提问于 2022-10-11 14:06:41
回答 1查看 281关注 0票数 1

我试着做一个实时的演讲到文字抄写脚本。下面的脚本适用于录制的wav文件。

代码语言:javascript
复制
 from asrecognition import ASREngine
 asr = ASREngine("tr", model_path="mpoyraz/wav2vec2-xls-r-300m-cv6-turkish")
 audio_paths = ["prerecorded.wav"]
 transcriptions = asr.transcribe(audio_paths)
 print(transcriptions)

但是我想用麦克风捕捉声音,当检测到一段时间的静音时,

录音必须停止,它将被管道到语音识别引擎进行转录。然后从麦克风录音必须重新启动。

我以为FFmpeg能做到,但怎么做到的呢?

EN

回答 1

Ask Ubuntu用户

发布于 2022-10-11 20:49:18

您可以通过脉冲音频和ffmpeg的组合来实现这一点:

**基于python pulsectl lib **的代码

脉冲= pulsectl.Pulse("Test1")

  1. 只有在存在接收器(例如麦克风) pulse.sink_input_list -which时,才能检索->pulseSinkInputInfoList。=pulse.sink_info(pulseSinkInputInfoList0.sink).monitor_source_name pulseSinkInputInfoList = pulse.sink_input_list() monName pulse.source_list= pulse.source_list()表示pulseSourceInfo : if pulseSourceInfo.name==monName: while : mos=pulseSourceInfo.index peak= pulse.get_peak_sample(mos,0.2)如果峰值> 0:执行fmpeg -f脉冲-i alsa_input.pci-0000_00_1b.0模拟立体声-ac 1 recording.m4a

这是一个堆栈溢出主题,因此我保持简短--只是为了给您一个要点。基本的想法是,使用脉冲音频检测到“峰值”线上的一些静音(或相反的)。然后可以执行ffmpeg命令来记录片段。据我所知,你最终会得到一堆短片,之后你可以使用ffmepg的concat协议加入/接受。

关于ffmpegs、脉冲协议concat协议的信息

在python中可以找到该协议的这里实现。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1434890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档