当前位置: 首页 > news >正文

啸叫抑制(AFS)从算法仿真到工程源码实现-第四节-数据仿真

一、概述

        本节我们使用python代码模拟啸叫的产生。

二、数据仿真

2.1 仿真流程图

2.2 仿真代码

#!/usr/bin/python
from __future__ import division
# import

import numpy as np
import matplotlib.pyplot as plt
import soundfile as sf


def simulate_howling_env():
    input_file = "test/LDC93S6A.wav"
    howling_file = "test/added_howling.wav"

    # load clean speech file
    x, Srate = sf.read(input_file)

    # pre design a room impulse response
    rir = np.loadtxt('test/path.txt', delimiter='\t')

    # G : gain from mic to speaker
    G = 0.2

    # ====== set parameters ========
    interval = 0.02  # frame interval = 0.02s
    Slen = int(np.floor(interval * Srate))
    if Slen % 2 == 1:
        Slen = Slen + 1
    PERC = 50  # window overlap in percent of frame size
    len1 = int(np.floor(Slen * PERC / 100))
    len2 = int(Slen - len1)
    nFFT = 2 * Slen

    N = min(2000, len(rir))  # limit room impulse response length
    x2 = np.zeros(N)  # buffer N samples of speaker output to generate acoustic feedback
    y = np.zeros(len(x))  # save speaker output to y
    y1 = 0.0  # init as 0
    for i in range(len(x)):
        x1 = x[i] + y1
        y[i] = G * x1
        y[i] = min(2, y[i])  # amplitude clipping
        y[i] = max(-2, y[i])
        x2[1:] = x2[:N - 1]
        x2[0] = y[i]
        y1 = np.dot(x2, rir[:N])

    sf.write(howling_file, y, Srate)
    plt.figure()
    plt.subplot(2, 1, 1)
    plt.plot(y)
    plt.xlim((0, len(y)))
    plt.subplot(2, 1, 2)
    plt.specgram(y, NFFT=nFFT, Fs=Srate, noverlap=len2, cmap='jet')
    plt.ylim((0, 5000))
    plt.ylabel("Frquency (Hz)")
    plt.xlabel("Time (s)")
    plt.show()


simulate_howling_env()


2.3 原始数据

2.4 生成的啸叫数据

三、总结

        本节我们使用代码对啸叫的产生进行了仿真,以方便对算法进行验证。


文章转载自:

http://bphcw9t8.nmhpq.cn
http://46faofWY.nmhpq.cn
http://M3ewknfR.nmhpq.cn
http://nHNsdn15.nmhpq.cn
http://p5taZhgQ.nmhpq.cn
http://B6E7BVBj.nmhpq.cn
http://5YDeIbhF.nmhpq.cn
http://KG2J67vT.nmhpq.cn
http://BI25jelj.nmhpq.cn
http://7wRrtDL8.nmhpq.cn
http://ddOOKpGq.nmhpq.cn
http://8a2RxwE8.nmhpq.cn
http://81ljg7xS.nmhpq.cn
http://ebAlztrq.nmhpq.cn
http://vD9tEqmA.nmhpq.cn
http://gUVdm51O.nmhpq.cn
http://zVqPPo2x.nmhpq.cn
http://khuD6TOz.nmhpq.cn
http://qMXO6ae1.nmhpq.cn
http://yXpJv0cf.nmhpq.cn
http://r1i5I10K.nmhpq.cn
http://n6VIrKVz.nmhpq.cn
http://QN5EFLf6.nmhpq.cn
http://8f2GYIuh.nmhpq.cn
http://E3Hbrxcb.nmhpq.cn
http://9oG1GsUH.nmhpq.cn
http://sAyV6awK.nmhpq.cn
http://HgQEo57W.nmhpq.cn
http://L0eEoPsj.nmhpq.cn
http://5ePd8IGx.nmhpq.cn
http://www.dtcms.com/a/93314.html

相关文章:

  • Day15 -实例 端口扫描工具 WAF识别工具的使用
  • 【MyBatisPlus】MyBatisPlus介绍与使用
  • spring boot + thymeleaf整合完整例子
  • ES6-Symbol
  • CTF题目《高明的黑客》(强网杯 2019)Write up
  • 靶场(十八)---小白心得思路分享---shenzi
  • 数据库三级填空+应用(2)
  • 使用 gone.WrapFunctionProvider 快速接入第三方服务
  • vue数字公式篇 Tinymce结合使用(二)
  • Python图像处理——基于CSRNet的人群密度检测系统(Pytorch框架)
  • 【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权相关工具类代码
  • 基于深度学习的图像识别技术在智能安防中的应用
  • 设计模式代码
  • 【sylar-webserver】5 协程调度模块
  • Django之旅:第六节--mysql数据库操作增删改查(二)
  • 【程序人生】我的holland原书版职业测试分析
  • 鸿蒙Flutter实战:19-Flutter集成高德地图,跳转页面方式
  • LLM(大语言模型)的算子融合技术
  • 精品推荐-2025全固态电池会议演讲嘉宾(脱敏)PPT合集(30份).zip
  • PyTorch量化技术教程:第三章 PyTorch模型构建与训练
  • PyTorch中的Tensor
  • HarmonyOS(扩展篇三):车联网操作系统
  • 测试用例的优先级划分规则
  • PDF处理控件Spire.PDF系列教程:Java 给现有的 PDF 文档添加页眉页脚
  • Linux 云服务器开放端口
  • Rust从入门到精通之进阶篇:11.所有权系统详解
  • CS144(四)
  • 基于python的图书管理系统设计与实现
  • Docker 搭建部署 仓库的搭建以及网络设置
  • 【深度破解】爬虫反反爬核心技术实践:验证码识别与指纹伪装