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

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

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

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

解決済

fPythonの音重ね

2323
2323

総合スコア5

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

2回答

0評価

2クリップ

574閲覧

投稿2020/07/24 13:56

編集2020/07/25 04:26

###起こっている問題
Pythonでnumpy配列同士を和の演算すると各要素の和になるということらしく表示されるグラフに影響が出てしまいました。それを回避するためにnumpyの何かしらを用いて音データの重ね合わせをしたいです。
song1に10秒の曲データ、song2に1秒のノイズデータがあるとして
song1の5-6秒の1秒間にノイズを重ね合わせて、それを反映させた音を聴けるようにするにはどうすればよいのでしょうか?

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

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

###song1の波形とsong2のノイズ波形(song1とsong2の最大値は一致させてある)
イメージ説明

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

Penpen7

2020/07/24 15:03

ソースコードを貼り付けてください。
2323

2020/07/24 15:09

追記しました、お願いします。
Penpen7

2020/07/24 16:52 編集

ありがとうございます。 以前に同じような質問をされていたかと思いますが、なぜ質問の回答の方法ではなくinsertを使われたのでしょうか? https://teratail.com/questions/274257 重ね合わせの意味を考えますと、要素同士の足し算でいいと思いますが...
2323

2020/07/24 16:56

以前は単純な和の演算で音を合成させて波形と音声を表示させていたのですが、表示したグラフの縦軸:振幅の最大値がノイズ合成前の曲データsong1と比べると増加していたり、振幅値の負の値の成分が減少しており、ノイズ挿入部の波形の位置が上昇していたから、これらを改善したく質問しました。 insertに関しては以前関連する質問をしたときにアドバイスをくださった方がいたからというのが理由です。
2323

2020/07/24 17:02

これが原因かはわかりませんが、この状態でフーリエ変換を経てローパスフィルタをかけると、ノイズ部が明らかに上方向にずれていくという事象が発生しています
Penpen7

2020/07/24 17:10 編集

> 振幅の最大値がノイズ合成前の曲データsong1と比べると増加していたり、振幅値の負の値の成分が減少しており 波を足し合わせているわけですから、波形は変化してもおかしくはないでしょう。振幅を変えたくないのでしょうか? > ノイズ挿入部の波形の位置が上昇 > ノイズ部が明らかに上方向にずれていく 「波形の位置」や「上」がどういう意味での「上」なのかよくわかりませんでした。
2323

2020/07/24 17:24

そうです、song2=ノイズ作成時に意図的にsong1の最大値と一致させたので、合成語の曲データmixmusicではノイズの最大値はそのままの状態で単純にsong1とsong2を合成した形で表示させたいのです。 合成後のmixmusicのノイズが挿入されている5-6秒の箇所の波形が、合成前の曲データsong1と重ねてグラフを表示するとなぜかmixmusicの負の振幅値がsong1の振幅値より振幅値0によっているといったらいいでしょうか…そのような状態です

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

INSERT

INSERTとは、行を追加する、コンピュータのデータベース言語SQLにおけるデータ操作言語(DML)ステートメントの1つである

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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