質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1574閲覧

Pythonで最大値を設定したのにグラフ化すると最大値を超えた値になる

2323

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/10 01:13

編集2020/07/10 01:24

発生している問題・実現したいこと

30秒の音データが代入された変数song1と1秒のノイズの音データが代入された変数song2があり、song2をsong1の再生開始から5~6秒の1秒間に挿入した30秒間の音データを変数mixmusicに代入し、グラフを表示させた。この時、あらかじめsong2の最大値をsong1の最大値と同じにしているはずなのに、グラフ上で見ると、合成されたsong2が最大値を超えた値になっているので、これを直したい

該当のソースコード

Python

1print('sampling rate:', sr) 2plt.plot(y) #yは音データ 3print(np.max(np.abs(y))) #この曲の最大値は0.810760498046875 4ans=np.max(np.abs(y)) #のちの最大値設定用 5 6**(雑音(ガウシアンノイズ)作成)** 7time = 1 8Srate = 22050 9 10x1=np.linspace(0, time, Srate*time) 11 12y1 = np.random.rand(Srate * time)#正規分布の乱数 13 14y1=np.clip(y1,None,ans) #最大値はansと同じにする 15 16dataa=y1 17 18print(np.max(np.abs(dataa))) 19print('sampling rate:', sr) 20plt.plot(dataa) 21plt.show() #グラフを表示 22IPython.display.Audio(dataa, rate=Srate) 23song1=y #元の曲データyを変数song1に代入 24song2=dataa#ホワイトノイズの音データy1を変数song2に挿入 25 26**(音データの合成)** 27song2_extend = np.zeros_like(song1) #song1と同じサイズの要素0のsong2_extendを用意 28song2_extend[5*sr:6*sr] = song2 #ノイズの音データsong2をsong1の5-6秒に当たる箇所に挿入 29mixmusic= song1+song2_extend #元の音データsong1に先ほどのノイズを挿入 30 31print('sampling rate:', sr) #サンプリングレート(周波数)を表示 32plt.plot(mixmusic) #完成音データの波形をプロット 33plt.show() #ディスプレイに波形を表示 34IPython.display.Audio(mixmusic, rate=sr) #完成音データを聞ける様に

音データyの波形と最大値
イメージ説明

雑音y1の波形と最大値
イメージ説明

両者を合成した波形
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/07/10 01:17

画像はマークダウンの外じゃないとだめなようですね
2323

2020/07/10 01:24

修正いたしました、ご報告感謝します。
guest

回答1

0

ベストアンサー

numpyで+すると、各要素の和になりますが、そのせいではないでしょうか。

python3

1mixmusic= song1+song2_extend #元の音データsong1に先ほどのノイズを挿入

ご参考まで
NumPy配列ndarrayに要素・行・列を挿入、追加するinsertの使い方

投稿2020/07/10 01:53

編集2020/07/10 01:55
jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問