67

numpyの2D配列から「心拍数モニター」効果を作成し、トーンに配列の値を反映させたいと思います。

4

8 に答える 8

93

fromwrite関数を使用しscipy.io.wavfileてwavファイルを作成し、それを好きなように再生できます。配列は整数でなければならないことに注意してください。したがって、floatがある場合は、それらを適切にスケーリングすることをお勧めします。

import numpy as np
from scipy.io.wavfile import write

data = np.random.uniform(-1,1,44100) # 44100 random samples between -1 and 1
scaled = np.int16(data/np.max(np.abs(data)) * 32767)
write('test.wav', 44100, scaled)

Pythonで実際にオーディオを再生する場合は、このページにいくつかのパッケージ/モジュールの概要を示します。

于 2012-04-28T01:00:51.850 に答える
38

2016年にここに来る人々にとって、scikits.audiolabは実際にはもう機能していないようです。サウンドデバイスを使用して解決策を得ることができました。

import numpy as np
import sounddevice as sd

fs = 44100
data = np.random.uniform(-1, 1, fs)
sd.play(data, fs)
于 2016-05-24T21:05:17.630 に答える
29

Jupyterでの最適なオプションは次のとおりです。

from IPython.display import Audio
wave_audio = numpy.sin(numpy.linspace(0, 3000, 20000))
Audio(wave_audio, rate=20000)
于 2016-09-21T11:31:10.723 に答える
15

さらに、 scikits.audiolabを試すこともできます。ファイルIOとアレイを「再生」する機能を備えています。配列は整数である必要はありません。dbauppの例を模倣するには:

import numpy as np
import scikits.audiolab

data = np.random.uniform(-1,1,44100)
# write array to file:
scikits.audiolab.wavwrite(data, 'test.wav', fs=44100, enc='pcm16')
# play the array:
scikits.audiolab.play(data, fs=44100)
于 2012-04-30T12:10:26.677 に答える
15

の使用に問題があったscikit.audiolabsため、このタスクの他のオプションを探しました。私はサウンドデバイスを思いついたが、それはもっと最新のようだ。Python3で動作するかどうかは確認していません。

必要なことを実行する簡単な方法は次のとおりです。

import numpy as np
import sounddevice as sd

sd.default.samplerate = 44100

time = 2.0
frequency = 440

# Generate time of samples between 0 and two seconds
samples = np.arange(44100 * time) / 44100.0
# Recall that a sinusoidal wave of frequency f has formula w(t) = A*sin(2*pi*f*t)
wave = 10000 * np.sin(2 * np.pi * frequency * samples)
# Convert it to wav format (16 bits)
wav_wave = np.array(wave, dtype=np.int16)

sd.play(wav_wave, blocking=True)
于 2016-05-31T18:10:02.487 に答える
2

PyGameには、pygame.sndarraynumpyデータをオーディオとして再生できるモジュールがあります。PyGameを起動して実行するのは難しい場合があるため、他の回答の方がおそらく優れています。繰り返しになりますが、scipyとnumpyにはそれぞれの問題が伴うため、PyGameをミックスに追加することは大きなステップではないかもしれません。

http://www.pygame.org/docs/ref/sndarray.html

于 2013-11-27T20:38:54.257 に答える
2

もう1つの最新の便利なソリューションは、さまざまなオーディオファイル形式の読み取りと書き込みが可能なpysoundfileを使用することです。

import numpy as np
import soundfile as sf

data = np.random.uniform(-1, 1, 44100)
sf.write('new_file.wav', data, 44100)
于 2019-06-17T07:17:09.370 に答える
1

アレイからオーディオを生成する方法の詳細はわかりませんが、mpg321は優れたコマンドラインオーディオプレーヤーであり、潜在的に機能する可能性があります。

私はこれをAnkiの選択プレーヤーとして使用します。これは、Pythonで記述されており、コード/配列をオーディオとインターフェースするための優れた出発点となるライブラリーを備えています。

チェックアウト:

于 2012-12-12T18:06:23.763 に答える