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

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

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

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Python

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

Q&A

解決済

1回答

3474閲覧

音声データの波形表示をmatplotlibで表示しようにも(x,y)の次元が合わないのはステレオで録音したから?

kay_ventris4

総合スコア269

Matplotlib

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Python

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

0グッド

0クリップ

投稿2020/10/31 08:55

編集2020/10/31 08:56

#やってみたいこと
iPhoneのボイスメモを用いて録音した音声データ(kay.m4a)を'https://online-audio-converter.com/ja/'のコンバーターを用いて.wavファイルに変換し(kay.wav)、サンプリング情報に加えてその波形データをmatplotlib上で出力しようとすると、xとyの次元が合わないとのエラーが出ました。

#該当コード

Python

1import wave as wave 2import pyroomacoustics as pa 3import numpy as np 4import matplotlib.pyplot as plt 5 6wav=wave.open('/Users/***/Desktop/Musica/kay.wav') 7 8print('サンプリング周波数: ',str(wav.getframerate()), 'Hz') 9print('サンプルサイズ:', str(wav.getsampwidth()), 'bytes') 10print('サンプル数: ', str(wav.getnframes())) 11print('チャンネル数: ', str(wav.getnchannels())) 12print('音声ファイルの時間: ', str(wav.getnframes()/wav.getframerate()), 's') 13 14data=wav.readframes(wav.getnframes()) 15data=np.frombuffer(data, dtype=np.int16) 16wav.close() 17 18data=data/np.iinfo(np.int16).max 19x=np.array(range(wav.getnframes()))/wav.getframerate() 20plt.xlabel('Time(s)') 21plt.ylabel('Value') 22plt.plot(x, data, color='navy') 23plt.show()

#サンプリング情報の出力(正常)と描画に関する出力(エラー)

Python

1サンプリング周波数: 44100 Hz 2サンプルサイズ: 2 bytes 3サンプル数: 8549962 4チャンネル数: 2 5音声ファイルの時間: 193.87668934240364 s 6Traceback (most recent call last): 7 File "/Users/***/Desktop/Musica/ wav_file.py", line 22, in <module> 8 plt.plot(x, data, color='navy') 9 File "/Users/***/opt/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2796, in plot 10 is not None else {}), **kwargs) 11 File "/Users/***/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 1665, in plot 12 lines = [*self._get_lines(*args, data=data, **kwargs)] 13 File "/Users/*/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 225, in __call__ 14 yield from self._plot_args(this, kwargs) 15 File "/Users/***/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 391, in _plot_args 16 x, y = self._xy_from_xy(x, y) 17 File "/Users/***/opt/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 270, in _xy_from_xy 18 "have shapes {} and {}".format(x.shape, y.shape)) 19ValueError: x and y must have same first dimension, but have shapes (8549962,) and (17099924,)

#原因推測
録音はAirpodsを使いました。学習が浅い為分かりませんが、おそらく拾った波形データが左右で異なる為yの値が二次元になっているということでしょうか?確かめる場所もどこか怪しいのですが、お力添え頂ける箇所が御座いましたら、ご教授のほど宜しくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらく拾った波形データが左右で異なる為yの値が二次元になっているということでしょうか?

そのとおりです。
チャンネル数が2となっているとおりステレオ音声です。
とりあえずdata = data[::2]なりで片方の音のみ取り出すと描画できます。
参考:Pythonでのwavファイル操作

投稿2020/10/31 09:10

can110

総合スコア38256

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

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

kay_ventris4

2020/10/31 11:58

左右分離の方までご丁寧に有難う御座いました。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問