gpt4 book ai didi

python - 在python中将sndarray转换为基于时间的数字?

转载 作者:行者123 更新时间:2023-12-03 02:10:35 25 4
gpt4 key购买 nike

我刚刚发现了 pygame 中的 sndarray 模块,我想用它来将音频波形转换成一个数字,这样我就可以做一些事情,比如根据音频缩放一个矩形等。这是我写的一些代码:

audio = pygame.mixer.Sound("example.ogg")
audio.play(-1)

audArray = pygame.sndarray.array(audio)

ticks = pygame.time.get_ticks()
wavForm = audArray[ticks*16] #ticks*16 based on audio rate or something like that

这就是我卡住的地方。我不太确定 wavForm 对象是什么意思,或者如何将它翻译成可以用于上述示例的内容。谢谢你的帮助。

最佳答案

我做了这样的东西——但我不知道它是否有意义。

我用了一些 ogg文件,我得到了 freq每秒超过 22 000 字节(即 22kHz)。
我用 clock.tick(freq)每秒获得 22 000 个循环(每个循环从数组中打印一个值)
但我不知道 PyGame 是否可以每秒循环 22 000 次。

import pygame
import pygame.mixer

pygame.init()
pygame.mixer.init()

#-----

audio = pygame.mixer.Sound("example.ogg")
print 'sound length (in seconds):', audio.get_length()

audio_array = pygame.sndarray.array(audio)
print 'array length (in bytes):', len(audio_array)

freq = len(audio_array)/audio.get_length() # frequences (loops per seconds)
print 'freq / bytes per second:', freq

#-----

clock = pygame.time.Clock()

#start_time = pygame.time.get_ticks()

raw_input("\npress ENTER ")

audio.play(-1)

for left, right in audio_array:
#current_time = pygame.time.get_ticks()
#play_time = current_time - start_time

print left, right

clock.tick(freq)

关于python - 在python中将sndarray转换为基于时间的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24516801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com