Skip to main content

索引音频文件并搜索单词/短语或匹配其中的正则表达式模式。

项目描述

简单的音频索引器:索引音频文件并搜索单词/短语或匹配正则表达式模式

构建状态 Apache v2.0 许可证 文件状态 支持 Python 2,7、3,3、3.4、3.5、3.6 车轮准备就绪

描述

这是一个 Python 库和命令行工具,可帮助您在音频文件(wav 格式)中搜索单词或短语。它还建立在初始搜索能力的基础上,并提供一些[所谓的]高级搜索能力!

它能做什么?

  • 索引音频文件(使用 Watson(在线/较高质量)或 CMU Pocketsphinx(离线/较低质量))并保存/加载结果。

  • 在多种语言的音频文件中搜索(默认为英语)

  • 为您的查询定义一个计时错误以处理差异。

  • 定义查询的约束条件,例如是否包含(子/超级)序列、缺少单词的结果等。

  • 进行全面的正则表达式模式匹配!

文档

要阅读文档,请访问此处。

要求

  • 安装了 pip 的 Python(v2.7、3.3、3.4、3.5 或 3.6)。

  • Watson API 凭证和/或 CMU Pocketsphinx

  • 短袜

  • ffmpeg(如果你选择 CMU Pocketsphinx)

  • py.text和tox(如果你想运行测试)

安装

打开终端并输入:

pip install SimpleAudioIndexer

可以在此处的文档中找到安装详细信息。

如果您无法进行本机安装或在 Windows 系统上,则 repo 中包含一个dockerfile 。

卸载

打开终端并输入:

pip uninstall SimpleAudioIndexer

但是,卸载sox取决于您使用的是 Linux 还是 Mac 系统。如需更多信息,请访问此处。

演示

假设你有这个音频文件:

演示音频文件

为简单起见,将其下载到一个空目录。我们将该目录称为SRC_DIR并将此音频文件的名称称为small_audio.wav。

这是您可以搜索它的方法。

命令行用法

打开终端并输入。

$ sai --mode "ibm" --username_ibm USERNAME --password_ibm PASSWORD --src_dir SRC_DIR --search "called"

{'called': {'small_audio.wav': [(1.25, 1.71)]}}

将USERNAME和PASSWORD替换为您的 IBM Watson 凭证,将 SRC_DIR 替换为您刚刚准备的目录的绝对路径。

与上面一样,输出将是一个字典,其中包含查询、它出现的文件以及该查询的所有(开始第二个,结束第二个)。

请注意,所有命令均适用于其他引擎(即 Pocketsphinx),例如上面的命令可以输入为:

$ sai --mode "cmu" --src_dir SRC_DIR --search "lives"

{'our': {'small_audio': [(2.93, 3.09)]}}

这将使用 Pocketsphinx 而不是 Watson 来获取时间戳。请注意,Pocketsphinx 的质量/准确性远低于 Watson。

除了搜索单词,您还可以匹配正则表达式模式,例如:

$ sai --mode ibm --src_dir SRC_DIR --username_ibm USERNAME --password_ibm PASSWORD --regexp " [a-z][a-z] "

{u' in ': {'small_audio.wav': [(2.81, 2.93)]},
{u' to ': {'small_audio.wav': [(1.71, 1.81)]}}

那是搜索两个字母单词的结果。请注意,您的结果将匹配任何任意正则表达式。

您还可以从命令行脚本保存和加载索引数据。如需更多信息,请访问此处。

图书馆使用

假设你有这个文件

>>> from SimpleAudioIndexer import SimpleAudioIndexer as sai

之后,您应该创建一个sai的实例

>>> indexer = sai(mode="ibm", src_dir="SRC_DIR", username_ibm="USERNAME", password_ibm="PASSWORD")

现在您可以通过调用index_audio方法来索引所有可用的音频文件:

>>> indexer.index_audio()

你可以有一个搜索生成器:

>>> searcher = indexer.search_gen(query="called")
# If you're on python 2.7, instead of below, do print searcher.next()
>>> print(next(searcher))
{'Query': 'called', 'File Name': 'small_audio.wav', 'Result': (1.25, 1.71)}

现在为 search_gen 实现了更多的参数。假设您希望搜索区分大小写(默认情况下不区分大小写)。或者,假设您想查找一个短语但存在时间间隔并且索引器没有正确选择它,您可以指定timing_error。或者,说某个词完全漏掉了,那么你可以指定missing_word_tolerance等。

如需完整列表,请参阅此处的 API 参考

请注意,您还可以调用search_all方法来搜索所有音频文件中的查询列表:

最后,您可以进行正则表达式搜索!

>>> print(indexer.search_regexp(pattern="[A-Z][^l]* ")
{u'Americans are ca': {'small_audio.wav': [(0.21, 1.71)]}}

实现了更多功能。有关详细说明,请阅读此处的文档。

很高兴在未来实施

  • 并行上传

  • 用于搜索的更多控制结构(错字、基于音素的单词近似,使用 CMU_DICT 或 NLTK 等)

  • 在音频文件中搜索难以理解的音频。可能是通过互相关或类似的东西。

贡献

如果您想贡献代码或想法、提交错误请求或提供反馈,请访问CONTRIBUTING文件。

作者

另请参阅此项目的贡献者列表。

执照

该项目在 Apache v2.0 许可下获得许可 - 有关更多详细信息,请参阅LICENSE 文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

SimpleAudioIndexer-1.0.0.tar.gz (119.8 kB 查看哈希)

已上传 source

内置分布

SimpleAudioIndexer-1.0.0-py2.py3-none-any.whl (43.9 kB 查看哈希)

已上传 py2 py3