程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了每次循环播放 wav 文件时,如何消除烦人的“啪”声?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决每次循环播放 wav 文件时,如何消除烦人的“啪”声??

开发过程中遇到每次循环播放 wav 文件时,如何消除烦人的“啪”声?的问题如何解决?下面主要结合日常开发的经验,给出你关于每次循环播放 wav 文件时,如何消除烦人的“啪”声?的解决方法建议,希望对你解决每次循环播放 wav 文件时,如何消除烦人的“啪”声?有所启发或帮助;

我正在尝试创建一个简单的可控和非阻塞循环播放器。使用 simpleaudio 创建的以下类有效,但是,在音频的每个循环之间有一个短暂的停顿和明显的爆裂/噼啪声。老实说,我不确定是什么原因造成的,我不确定如何解决它,而不是完全使用不同的音频模块。有什么建议吗?

import simpleaudio as sa
from threading import Thread

class WavPlayer(Thread):
    def __init__(self,filepath,loop=falsE):

        self.loop = loop
        self.wav_obj = sa.WaveObject.from_wave_file(filepath)
        self.play_obj = None

        Thread.__init__(self)

    def run(self):
        self.play_obj = self.wav_obj.play() #initialize play buffer and play once

        while self.loop is True:
            if not self.play_obj.is_playing():
                print("played again")
                self.play_obj = self.wav_obj.play()

    def terminate(self):
        print("music terminated")
        self.play_obj.stop()
        self.loop = false
        self.join()

main_loop = WavPlayer("main_loop.wav",TruE)
menu_loop = WavPlayer("menu.wav",TruE)

main_loop.start()
z = input("Enter to end theme looPing")
main_loop.loop = false

z = input("Enter to terminate music")
main_loop.terminate()

print("playing next song")
menu_loop.start()

cont = ''
while cont != 'n':
    cont = input("conTinue tesTing non-blocking? enter n to stop: ")

menu_loop.terminate()

Filedropper link to menu_loop wav file

Filedropper link to main_loop wav file

解决方法

我在编写一个调音器时遇到了同样的问题,该调音器从有限数量的样本中生成无限长的音符(我使用了 pyaudio,并且调音音符是一个非常简单的声音,这使得爆破声非常明显,但补救要容易得多)。

如果你循环一个波浪对象:

   **                    **
       *              *      *
         *          *          *
           *      *              *
              **                    **

...由于最后一个和第一个样本之间的巨大差异,您会听到砰的一声。删除一些样本直到最后一个和第一个样本匹配将消除流行音乐(simpleaudio 允许您将样本读入 numpy 数组,然后您可以(稍微)截断(稍微)直到第一个和最后一个样本匹配).

在零交叉处切割是这种情况的一个特例,请参阅 this discussion。当然,一些声音库可能已经在零交叉处截断了您的样本。

在麻烦扩展程序以将样本转换为 numpy 数组并截断它们之前,您首先可以尝试使用 Audacity 之类的声音编辑器并手动完成,然后聆听结果。

大佬总结

以上是大佬教程为你收集整理的每次循环播放 wav 文件时,如何消除烦人的“啪”声?全部内容,希望文章能够帮你解决每次循环播放 wav 文件时,如何消除烦人的“啪”声?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:wav文件时