gpt4 book ai didi

android - 使用 SL4A 使用 Python 获取录制声音的振幅

转载 作者:行者123 更新时间:2023-11-30 04:16:50 25 4
gpt4 key购买 nike

我想使用 SL4A 的 Python 编写的应用程序录制 1 秒钟的声音,然后找到声音的最大振幅。

我可以使用 SL4A API 的任何部分或可以使用的 Python API 的一部分吗?或者我可以为此安装任何 python 模块吗?

我从 SL4A 搜索了 Python API,但没有发现任何与振幅相关的内容。也许我只是错过了它。

更新:

我已经设法将 wave.py 模块导入到我的代码中,并尝试打开录制的文件。但是当我访问

wave.open("/sdcard/sl4aTemp/sound_sample.wav")

它抛出这个错误,

文件不是以 RIFF id 开头

对于那些好奇我的代码在这里看起来如何的人:

import android, audioop, time, wave

droid = android.Android()

print "Recording starts in: "
for i in range(0,5):
time.sleep(1)
print str(5-i)
time.sleep(1)

print "Speak!"
droid.recorderStartMicrophone('/sdcard/sl4aTemp/sound_sample.wav')
time.sleep(3)
droid.recorderStop()

print "Processing file in:"
for i in range(0,3):
print str(3-i)
time.sleep(1)

filename = "/sdcard/sl4aTemp/sound_sample.wav"

if wave.open(filename,"r") == True:
print "Processing " + filename
else:
print "File not processed"

FILE=wave.open(filename,"r")
rez=FILE.readframes(30)
print str(rez)

最佳答案

用 python 处理声音的标准答案是 PyAudio,它是一个独立的包,实际上依赖于 PortAudio,它可能不是为 android 构建的,所以它不是一个好的解决方案(除非你想成为英雄并尝试让它构建)。

另一个选项是 audioop module .问题在于您需要将文件保存的任何格式转换为 audioop 接受的格式(8/16/32 位宽带符号整数样本的字符串)。很难说您将如何做到这一点,但如果您真的很幸运,它将是一个 .wav 文件,您可以只使用 wave module's readframes (方便地将数据输出为字节串)。

因此,如果 SL4A 实现了所有 python 核心,您可能能够在没有依赖项的情况下完成它。

关于android - 使用 SL4A 使用 Python 获取录制声音的振幅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847084/

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