索引音频文件并搜索单词/短语或匹配其中的正则表达式模式。
项目描述
描述
这是一个 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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5c9eae1118c4b33573a1ff88a5114a61cc908b032924d5a134c47ab4546898b2 |
|
| MD5 | 4041ec8f7a03ad4b00b048cc6b15f211 |
|
| 布莱克2-256 | 4b8f4fae47b91a10881c5c4141fefe3553c921c93372d5659c3b269208d8e7df |
SimpleAudioIndexer -1.0.0-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | b5e9d504b2fc95dea3e6f75d9b388e0fdaad2460979fa2730e9832224fd4fe16 |
|
| MD5 | 34e025729dd940d3ce0437d058e87326 |
|
| 布莱克2-256 | 25765351d3554d408901a913e6dc239ae420017469d2079196cf43e0bcb70cf0 |