当前位置: 首页 > 面试题库 >

在python中的单词上分割语音音频文件

苏健柏
2023-03-14
问题内容

我觉得这是一个相当普遍的问题,但我尚未找到合适的答案。我有很多想在单词上打断的人类语音音频文件,可以通过查看波形中的停顿来试探性地完成,但是谁能指出我在python中自动执行此功能的函数/库吗?


问题答案:

一个简单的方法是使用pydub模块。最近添加的静默实用程序可以完成所有繁重的工作,如setting up silence threaholdsetting up silence length。等等,并且与所提到的其他方法相比,大大简化了代码。

这是一个演示实现,从这里得到启发

设定:

我在文件“
az.wav”中有一个音频文件,其中包含从A到的口头英语字母Z。子目录splitAudio是在当前工作目录中创建。执行演示代码后,文件被拆分为26个单独的文件,每个音频文件存储每个音节。

观察结果: 一些音节被切除,可能需要修改以下参数,
min_silence_len=500
silence_thresh=-16

可能需要根据自己的需要调整这些内容。

演示代码:

from pydub import AudioSegment
from pydub.silence import split_on_silence

sound_file = AudioSegment.from_wav("a-z.wav")
audio_chunks = split_on_silence(sound_file, 
    # must be silent for at least half a second
    min_silence_len=500,

    # consider it silent if quieter than -16 dBFS
    silence_thresh=-16
)

for i, chunk in enumerate(audio_chunks):

    out_file = ".//splitAudio//chunk{0}.wav".format(i)
    print "exporting", out_file
    chunk.export(out_file, format="wav")

输出:

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
exporting .//splitAudio//chunk0.wav
exporting .//splitAudio//chunk1.wav
exporting .//splitAudio//chunk2.wav
exporting .//splitAudio//chunk3.wav
exporting .//splitAudio//chunk4.wav
exporting .//splitAudio//chunk5.wav
exporting .//splitAudio//chunk6.wav
exporting .//splitAudio//chunk7.wav
exporting .//splitAudio//chunk8.wav
exporting .//splitAudio//chunk9.wav
exporting .//splitAudio//chunk10.wav
exporting .//splitAudio//chunk11.wav
exporting .//splitAudio//chunk12.wav
exporting .//splitAudio//chunk13.wav
exporting .//splitAudio//chunk14.wav
exporting .//splitAudio//chunk15.wav
exporting .//splitAudio//chunk16.wav
exporting .//splitAudio//chunk17.wav
exporting .//splitAudio//chunk18.wav
exporting .//splitAudio//chunk19.wav
exporting .//splitAudio//chunk20.wav
exporting .//splitAudio//chunk21.wav
exporting .//splitAudio//chunk22.wav
exporting .//splitAudio//chunk23.wav
exporting .//splitAudio//chunk24.wav
exporting .//splitAudio//chunk25.wav
exporting .//splitAudio//chunk26.wav
>>>


 类似资料:
  • 目前需要用whsiper做语音转录服务,whisper限制25M的大小,请问该如何做这个事情? 目前的需求是 Android iOS Web 都需要这个功能, 目前有几种方案: 方案1 做一个音频分割服务器,然后在做一个转录服务。前端拿到语音文件之后,把语音文件传给音频分割服务器,分割服务器根据波形进行分割,分割完之后传给转录接口。 问题: 这样做的话是不是会造成语音上传多次导致时间较长的问题,因

  • 我已经搜索了Google的所有可用文档,但我找不到Python音频流上的流式语音识别示例。 目前,我正在Django中使用Python语音识别从用户那里获取音频,然后收听音频。然后,我可以保存文件并运行google语音识别,或者直接从创建的音频实例中运行。 有人能指导我如何对音频流执行流式语音识别吗?

  • 使用Microsoft语音API转录中/大型音频文件(每个文件约6-10分钟)的最佳方式是什么?比如批量音频文件转录? 我使用了https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/speech-to-text-sample中提供的代码,用于连续转录语音,但它在某个时候停止转录。转录有任何限制吗?我只使用免

  • 我想开发一个模块,它将使用Android中的语音到文本支持。我发现了许多与RecogenerIntent等相关的文档和演示。但我发现所有这些演示都只是在10秒左右的时间里播放声音。但我想让我的演示运行5-10分钟以上。如果不是离线运行,我不会有任何问题,因为我的应用程序总是在线运行。 我也看过Android上的Pocketsphinx,但效果不太好。此外,它只支持Android Studio,而不

  • 我对javascript和discord.js很陌生,有人知道如何让机器人加入一个频道,播放一个文件然后离开吗? 以下是我尝试过的: 现在,它将发送消息加入语音通道,而不管我是否在其中,如果我在其中,它就不会加入语音通道并播放文件。任何帮助都很感激。

  • 我正在考虑为我的母语开发语音识别软件,我正在考虑为此使用CMUSphinx-4。有一个CMU字典文件,其中包含英语单词,这些单词通过原始单词的拆分映射到其音位边界。例如,已放弃=