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

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

ただいまの
回答率

88.91%

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 194

2323

score 3

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

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

該当のソースコード

print('sampling rate:', sr)
plt.plot(y) #yは音データ
print(np.max(np.abs(y))) #この曲の最大値は0.810760498046875
ans=np.max(np.abs(y)) #のちの最大値設定用

**(雑音(ガウシアンノイズ)作成)**
time = 1
Srate = 22050

x1=np.linspace(0, time, Srate*time)

y1 = np.random.rand(Srate * time)#正規分布の乱数

y1=np.clip(y1,None,ans) #最大値はansと同じにする

dataa=y1

print(np.max(np.abs(dataa)))
print('sampling rate:', sr)
plt.plot(dataa)
plt.show() #グラフを表示
IPython.display.Audio(dataa, rate=Srate)
song1=y #元の曲データyを変数song1に代入
song2=dataa#ホワイトノイズの音データy1を変数song2に挿入

**(音データの合成)**
song2_extend = np.zeros_like(song1) #song1と同じサイズの要素0のsong2_extendを用意
song2_extend[5*sr:6*sr] = song2 #ノイズの音データsong2をsong1の5-6秒に当たる箇所に挿入
mixmusic= song1+song2_extend #元の音データsong1に先ほどのノイズを挿入

print('sampling rate:', sr) #サンプリングレート(周波数)を表示
plt.plot(mixmusic) #完成音データの波形をプロット
plt.show() #ディスプレイに波形を表示
IPython.display.Audio(mixmusic, rate=sr) #完成音データを聞ける様に


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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • y_waiwai

    2020/07/10 10:17

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

    キャンセル

  • 2323

    2020/07/10 10:24

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

    キャンセル

回答 1

checkベストアンサー

+1

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る