Analyze audio quality, detect noise types, and provide improvement recommendations. Use when users need to check audio quality, validate recordings, or identify audio problems.
分析音频文件以检测质量问题,识别噪音类型,并提供改进建议。
安装所需的 Python 包:
bash
pip install requests
python
import os
import requests
APIKEY = os.environ[SENSEAUDIOAPI_KEY]
def checkaudioquality(audio_file):
url = https://api.senseaudio.cn/v1/audio/analysis
headers = {Authorization: fBearer {API_KEY}}
files = {file: open(audio_file, rb)}
data = {model: sense-asr-check}
response = requests.post(url, headers=headers, files=files, data=data)
return response.json()
python
def parsequalityreport(analysis_result):
audioinfo = analysisresult.get(audio_info, {})
result = analysis_result.get(result, {})
report = {
durationms: audioinfo.get(duration),
format: audio_info.get(format),
hasissues: result.get(hasnoise, False),
noisescore: result.get(noisescore, 0),
severity: result.get(severity, none),
noisetypes: result.get(noisetypes, []),
analysis: result.get(analysis, ),
recommendations: generate_recommendations(result)
}
return report
python
def generaterecommendations(qualityresult):
recommendations = []
noisescore = qualityresult.get(noise_score, 0)
noisetypes = qualityresult.get(noise_types, [])
severity = quality_result.get(severity, none)
# 基于严重程度的通用建议
if severity == severe:
recommendations.append(在更安静的环境中重新录制音频)
recommendations.append(使用专业音频设备)
elif severity == moderate:
recommendations.append(在后处理中应用降噪)
recommendations.append(考虑使用更好的麦克风)
elif severity == mild:
recommendations.append(轻微降噪可改善质量)
# 基于噪音类型的特定建议
if backgroundnoise in noisetypes:
recommendations.append(在更安静的位置录制)
recommendations.append(使用声学处理(泡沫板、窗帘))
if hum in noise_types:
recommendations.append(检查电气干扰)
recommendations.append(使用平衡音频线缆)
recommendations.append(确保设备正确接地)
if static in noise_types:
recommendations.append(检查线缆连接)
recommendations.append(更换故障线缆或设备)
if windnoise in noisetypes:
recommendations.append(使用防风罩或防喷罩)
recommendations.append(在室内或有遮挡的位置录制)
if echo in noise_types:
recommendations.append(添加声学处理以减少反射)
recommendations.append(靠近麦克风录制)
return recommendations
python
def batchqualitycheck(audio_files):
results = []
for audiofile in audiofiles:
try:
analysis = checkaudioquality(audio_file)
report = parsequalityreport(analysis)
results.append({
file: audio_file,
status: analyzed,
report: report
})
except Exception as e:
results.append({
file: audio_file,
status: error,
error: str(e)
})
return results
python
def calculatequalityscore(analysis_result):
计算整体质量评分(0-100)
noisescore = analysisresult.get(noise_score, 0)
severity = analysis_result.get(severity, none)
# 基础分数
base_score = 100
# 基于噪音分数的扣分
noisepenalty = noisescore * 50 # 最高扣50分
# 严重程度的额外扣分
severity_penalties = {
none: 0,
mild: 10,
moderate: 25,
severe: 40
}
severitypenalty = severitypenalties.get(severity, 0)
finalscore = max(0, basescore - noisepenalty - severitypenalty)
return {
score: round(final_score, 1),
grade: getqualitygrade(final_score)
}
def getqualitygrade(score):
if score >= 90:
return 优秀
elif score >= 75:
return 良好
elif score >= 60:
return 一般
elif score >= 40:
return 较差
else:
return 不可接受
python
def compareaudioquality(originalfile, processedfile):
比较处理前后的质量
originalanalysis = checkaudioquality(originalfile)
processedanalysis = checkaudioquality(processedfile)
originalscore = calculatequalityscore(originalanalysis[result])
processedscore = calculatequalityscore(processedanalysis[result])
comparison = {
original: {
file: original_file,
score: original_score,
noisescore: originalanalysis[result][noise_score]
},
processed: {
file: processed_file,
score: processed_score,
noisescore: processedanalysis[result][noise_score]
},
improvement: {
scoredelta: processedscore[score] - original_score[score],
noisereduction: originalanalysis[result][noisescore] - processedanalysis[result][noise_score]
}
}
return comparison
python
def qualitygatecheck(audiofile, minscore=70):
检查音频是否达到最低质量阈值
analysis = checkaudioquality(audio_file)
quality = calculatequalityscore(analysis[result])
passed = quality[score] >= min_score
return {
passed: passed,
score: quality[score],
grade: quality[grade],
threshold: min_score,
analysis: analysis
}
python
def generatedetailedreport(audio_file):
生成综合质量报告
analysis = checkaudioquality(audio_file)
report = parsequalityreport(analysis)
quality = calculatequalityscore(analysis[result])
detailed_report = f
return detailed_report
python
def validaterecordingenvironment():
在实际录制前测试录制环境
# recordtestaudio() 是一个占位符——使用您偏好的音频捕获库(如 sounddevice、pyaudio)录制短片段。
testfile = recordtest_audio(duration=5)
# 检查质量
gateresult = qualitygatecheck(testfile, min_score=75)
if gate_result[passed]:
return {
ready: True,
message: 环境适合录制
}
else:
return {
ready: False,
message: 环境需要改进,
recommendations: gate_result[analysis
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 audio-quality-checker-1776107522 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 audio-quality-checker-1776107522 技能
skillhub install audio-quality-checker-1776107522
文件大小: 3.94 KB | 发布时间: 2026-4-15 11:45