Speech recognition 用于语音检测和识别的开放源代码

Speech recognition 用于语音检测和识别的开放源代码,speech-recognition,speech,pyaudioanalysis,Speech Recognition,Speech,Pyaudioanalysis,我有15盘录音带,其中一盘我相信是我祖母和我谈话的旧录音带。很快就找到了正确的地方,但没有找到。我不想听20个小时的磁带来找到它。该位置可能不在其中一个磁带的开头。大部分内容似乎分为三类——按照总长度的顺序,最长的第一类:沉默、语音广播和音乐 我打算把所有的磁带都转换成数字格式,然后再寻找录音带。最明显的方法是在我做其他事情的时候,在后台播放它们。这对我来说太直截了当了,所以:有没有开源库或其他代码可以让我找到,以提高复杂性和实用性: 非沉默区 包含人类语言的区域 包含我自己(和我祖母)讲话的区

我有15盘录音带,其中一盘我相信是我祖母和我谈话的旧录音带。很快就找到了正确的地方,但没有找到。我不想听20个小时的磁带来找到它。该位置可能不在其中一个磁带的开头。大部分内容似乎分为三类——按照总长度的顺序,最长的第一类:沉默、语音广播和音乐

我打算把所有的磁带都转换成数字格式,然后再寻找录音带。最明显的方法是在我做其他事情的时候,在后台播放它们。这对我来说太直截了当了,所以:有没有开源库或其他代码可以让我找到,以提高复杂性和实用性:

  • 非沉默区
  • 包含人类语言的区域
  • 包含我自己(和我祖母)讲话的区域
  • 我更喜欢Python、Java或C

    如果答案不合格,请提供搜索词提示,因为我对该领域一无所知

    我知道我可以轻松地在这上面花费20多个小时。

    两个想法:

    • 例如,查看“语音识别”字段
    • 有一个可能有用的“截断沉默”工具

    如果您熟悉java,您可以尝试通过minim输入音频文件并计算一些FFT频谱。可以通过定义样本振幅的最小水平(排除噪声)来检测静音。为了从音乐中分离语音,可以使用时间窗的FFT频谱。语音使用一些非常明显的频带,称为共振峰 -特别是对于vovels,音乐在频谱中的分布更为均匀

    你可能不会得到语音/音乐块的100%分离,但最好是标记文件,只听感兴趣的部分


    最好的选择是找到一个开源的模块来进行语音识别或说话人识别(而不是语音识别)。说话人识别用于识别特定的说话人,而语音识别则是将语音转换为文本。可能有开源的说话人识别软件包,您可以尝试在SourceForge.net之类的网站上搜索“说话人识别”或“语音和生物识别”。因为我自己没有用过,所以我不能推荐任何东西

    如果你找不到任何东西,但你对自己的一个感兴趣,那么对于任何流行语言都有很多开源FFT库。这项技术将是:

    • 以数字形式录制你正常说话和你祖母正常说话的典型录音,尽量减少背景噪音
      • 对目标录音中大约每秒的音频进行FFT
      • 从您创建的FFT配置文件阵列中,过滤掉低于某个平均能量阈值的任何配置文件,因为它们最有可能是噪声
      • 通过平均掉未过滤的FFT快照,构建主FFT配置文件
      • 然后对数字化目标音频重复上述FFT采样技术(20小时的内容)
      • 标记目标音频文件中任何时间FFT快照索引与您和您祖母的主FFT配置文件相似的区域。您需要使用相似性设置,以避免出现太多误报。另外请注意,您可能必须将FFT频率仓比较限制为仅在主FFT配置文件中具有能量的频率仓。否则,如果你和你祖母谈话的目标音频包含显著的背景噪声,它将丢弃你的相似性函数
      • 列出一份人工检查的时间指标清单
    请注意,完成此项目的小时数很容易超过手动收听录音的20小时。但这将比20小时的音频更有趣,你可以在将来再次使用你构建的软件


    当然,如果从隐私角度看音频不敏感,你可以将音频试听任务外包给亚马逊的mechanical turk之类的公司。

    我之前写过一篇关于使用Windows语音识别的博客文章。我有一个关于在C#中将音频文件转换为文本的基本教程。您可以查看。

    试试audacity+以光谱图形式查看轨迹(logf)+训练您的眼睛(!)识别语音。您需要调整时间刻度和FFT窗口。

    您可能会节省您大部分时间的是说话人日记。这是通过使用说话人ID注释录音来实现的,然后您可以手动将其映射到真实的人,只需很少的努力。错误率通常约为记录长度的10-15%,听起来很糟糕,但这包括检测到太多的说话人,并将两个ID映射到同一个人,这并不难纠正

    其中一个很好的工具是(C++),尽管它对输入格式有点挑剔。请参阅此工具的用法。它输出语音/语音活动检测元数据和说话人日记,这意味着您将获得第一和第二点(VAD/SAD)以及一点额外信息,因为它会注释记录中同一说话人何时处于活动状态

    另一个有用的工具是(Java),它基本上也是这样做的,只是我还没有花足够的精力去弄清楚如何获取VAD元数据。它具有一个很好的随时可用的功能

    只需稍加编译,这项工作将在一小时内完成。

    您还可以尝试:

  • 消音:
  • 从pyAudioAnalysis导入audioBasicIO作为aIO
    从pyAudioAnalysis导入音频分段作为
    [Fs,x]=aIO.readAudioFile(“data/recording1.wav”)
    分段=aS.munerremoval(x,Fs,0.020,0.020,smoothWindow=1.0,Weight=0.3,plot=True)

    segm