• 大小: 1.28MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-10-24
  • 语言: 其他
  • 标签: AudioCompare  

资源简介

AudioCompare 音频相似度比较,匹配上会返回匹配的数值

资源截图

代码片段和文件信息

# -*-coding:utf8-*-
import os
import re
import subprocess

# 读取txt文件内容,每行分开加入到list中
def readTxt(path ignore):
    contentList = list()
    for line in open(path “r“):
        line = re.sub(r‘\n‘ ‘‘ line)
        if line.find(ignore) == -1:
            contentList.append(line)
    return contentList

def compareAudio(fileNameList compareFile):
    # 调用AudioCompare库方法比较两个文件
    fileName = compareFile.split(‘/‘)[-1]
    filePath = compareFile[:-len(fileName)]
    if not os.path.exists(filePath):
        os.mkdir(filePath)
    if os.path.exists(compareFile):  # 已存在
        fout = open(compareFile ‘a‘)
    else:
        fout = open(compareFile ‘w‘)
        fout.write(‘# 记录音频比较结果的文件\n‘)
    contentList = readTxt(compareFile ‘#‘)
    for index fileName in enumerate(fileNameList):
        for compareFileName in fileNameList[index + 1:]:
            # 从记录的文件中取值,如果已经比较过就不再比较
            needCompareFlag = True
            for content in contentList:
                if fileName in content.split(‘|‘) and compareFileName in content.split(‘|‘):
                    needCompareFlag = False
                    print ‘已存在:‘ + fileName + ‘|‘ + compareFileName
            if needCompareFlag:
                command = ‘ AudioCompare-master/main.py -f ‘ + fileName + ‘ -f ‘ + compareFileName
                p = subprocess.Popen(‘python‘ + command stdout=subprocess.PIPE shell=True)
                stdoutput = p.stdout.readlines()
                fout.write(stdoutput[0])


# 获取文件大小
def getFileSize(fileName):
    try:
        return os.path.getsize(fileName)
    except Exception as err:
        print(err)

# 得到文件大小相似的集合,返回[[(‘xx.wav‘3715364L)][(‘xx.wav‘3715364L)(‘xx.wav‘3715364L)(‘xx.wav‘3715364L)]]
def sortedNearFile(fileNamesList level):
    # 得到每个文件的大小
    fileSizeDict = dict()
    for fileName in fileNamesList:
        fileSizeDict.setdefault(fileName getFileSize(fileName))
    # 先按照文件的大小排序
    sortedFileSizeList = sorted(fileSizeDict.iteritems() key=lambda item: item[1])
    # 逐个比较相邻的文件大小,小于阈值,提取出来
    nearFileList = list()
    for index in range(0 len(sortedFileSizeList)):
        if index + 1 < len(sortedFileSizeList) and index > 0:
            # 和左边的比
            preVal = abs(sortedFileSizeList[index][1] - sortedFileSizeList[index - 1][1])
            # 和右边比
            nextVal = abs(sortedFileSizeList[index][1] - sortedFileSizeList[index + 1][1])
            # 得出与左边或右边音频大小小于阀值的音频
            if preVal <= level or nextVal <= level:
                nearFileList.append(sortedFileSizeList[index])
    # 把重复的放在一个列表中,返回[[(‘xx.wav‘3715364L)][(‘xx.wav‘3715364L)(‘xx.wav‘3715364L)(‘xx.wav‘3715364L)]]
    sortedNearFileList = list()
    i = 0
    for index in range(0 len(nearFileList)):
        # 如果nearFileList[index] - sortedNearFileList[i][0] <= level 就添加,否则添加到sortedNearFileList[i+1]中
        if len(sortedNearFileList) == 0:
            sortedNearFileList.append([nearFileL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-05-25 10:35  AudioCompare-master\
     文件          26  2015-06-17 22:13  AudioCompare-master\.gitignore
     文件          55  2015-06-17 22:13  AudioCompare-master\audiomatch
     文件         471  2015-06-17 22:13  AudioCompare-master\common.py
     文件        1397  2017-05-18 13:41  AudioCompare-master\common.pyc
     文件         162  2015-06-17 22:13  AudioCompare-master\error.py
     文件         676  2017-05-18 13:41  AudioCompare-master\error.pyc
     文件        3372  2015-06-17 22:13  AudioCompare-master\FFT.py
     文件        4108  2017-05-18 13:41  AudioCompare-master\FFT.pyc
     文件        6015  2015-06-17 22:13  AudioCompare-master\InputFile.py
     文件        7546  2017-05-18 13:41  AudioCompare-master\InputFile.pyc
     文件      362913  2015-06-17 22:13  AudioCompare-master\lame
     文件        2413  2015-06-17 22:13  AudioCompare-master\LICENSE.matplotlib
     文件        1353  2015-06-17 22:13  AudioCompare-master\main.py
     文件       14594  2015-06-17 22:13  AudioCompare-master\Matcher.py
     文件       11916  2017-05-18 13:41  AudioCompare-master\Matcher.pyc
     文件        1962  2015-06-17 22:13  AudioCompare-master\README.md
     文件        2938  2015-06-17 22:13  AudioCompare-master\TECHNICAL_OVERVIEW
     目录           0  2017-05-18 13:37  AudioCompare-master\test\
     文件        1081  2015-06-17 22:13  AudioCompare-master\test\A5Test.py
     文件       43237  2015-06-17 22:13  AudioCompare-master\test\BlackBox.py
     文件         744  2015-06-17 22:13  AudioCompare-master\test\InputFileTest.py
     文件       15062  2015-06-17 22:13  AudioCompare-master\test\ProfTest.py
     文件        7195  2015-06-17 22:13  AudioCompare-master\test\scores.py
     文件        1764  2015-06-17 22:13  AudioCompare-master\test\similaritywav.py
     文件        9941  2015-06-17 22:13  AudioCompare-master\test\TestCommon.py
     文件        2520  2015-06-17 22:13  AudioCompare-master\test\visualizer.py
     文件      701474  2017-05-25 10:12  init30_1.wav
     文件      766618  2017-05-25 10:10  init30_1_copy.wav
     文件        4504  2017-05-25 10:39  testCompareAudio.py

评论

共有 条评论

相关资源