1

SL4A用のPythonで作成されたアプリを使用して1秒間サウンドを録音してから、サウンドの最大振幅を見つけたいと思います。

使用できるSL4AAPIの一部、または使用できるPython APIの一部はありますか?または、この問題のためにインストールできるPythonモジュールはありますか?

SL4AからPythonAPIを検索しましたが、振幅に関連するものは見つかりませんでした。多分私はそれを逃した。

アップデート:

モジュールをコードにインポートしwave.pyて、記録されたファイルを開こうとしました。しかし、私がアクセスするとき

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

このエラーをスローします、

File does not start with 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)
4

1 に答える 1

1

Python を使用したサウンド処理に対する標準的な答えは PyAudio です。これは、実際には PortAudio に依存する別のパッケージであり、おそらく Android 用にビルドされていないため、実際には良い解決策ではありません (ヒーローになりたいと思って取得しようとしている場合を除きます)。構築する)。

別のオプションはaudioopモジュールです。問題は、ファイルが保存されている形式を、audioop受け入れられる形式 (8/16/32 ビット幅の符号付き整数サンプルの文字列) に変換する必要があることです。どのようにそれを行うかを言うのは難しいですが、本当に運が良ければ、.wav ファイルになり、waveモジュールreadframes(データをバイトの文字列として便利に出力します) を使用することができます。

したがって、SL4A がすべての Python コアを実装している場合、依存関係なしで実行できる可能性があります。

于 2012-03-23T23:47:40.650 に答える