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

Android 使用SL4A使用Python获取录制声音的振幅,android,python,audio,sl4a,amplitude,Android,Python,Audio,Sl4a,Amplitude,我想使用Python编写的SL4A应用程序录制声音1秒,然后找到声音的最大振幅 我是否可以使用SL4A API的任何部分,或者可以使用Python API的任何部分?或者我可以为此安装任何python模块吗 我从SL4A搜索了Python API,但没有找到任何与振幅相关的内容。也许我只是错过了 更新: 我已成功地将wave.py模块导入到我的代码中,并尝试打开录制的文件。但当我访问 wave.open(“/sdcard/sl4aTemp/sound\u sample.wav”) 它抛出了这个错

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

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

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

更新:

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

wave.open(“/sdcard/sl4aTemp/sound\u 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
接受的格式(8/16/32位宽带符号整数样本的字符串)。很难说您将如何做到这一点,但如果您真的很幸运,它将是一个.wav文件,您可以使用(它方便地以字节字符串形式输出数据)


因此,如果SL4A实现了所有的python核心,那么您就可以不依赖任何依赖项来实现它。

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

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


因此,如果SL4A实现了所有python核心,您可能可以不依赖它来实现它。

我必须尝试一下,这个想法听起来很有希望。因此,我设法录制了声音,我使用了
导入wave,audioop
模块,它没有说这是一个错误,但当我尝试使用
wave.open()时
它说它找不到文件
wave.py
。所以,我搜索了它,并试图将其作为一个模块,我将在我的项目中导入,希望我能克服这个问题。再次感谢提示!我必须尝试一下,这个想法听起来很有希望。因此,我设法录制了声音,并使用了
导入wave,audiop
modules,它并没有说这是一个错误,但当我尝试使用
wave.open()
时,它说它找不到文件
wave.py
。所以,我已经搜索了它,我正试图将其作为一个模块导入到我的项目中,希望我能克服这个问题。再次感谢您的提示!