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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

1回答

630閲覧

python 「wavファイルのリストを作成する」方法を教えてください。

SR15_6PRO

総合スコア24

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2019/10/04 05:35

「wavファイルのリストを作成する」方法を教えてください。

wavファイルを読み込み、スペクトログラムを表示し、スペクトログラムのデータをcsvで保存するコードをまず私が書き、
それを先生に加工してもらい、データのリストをfor文でなぞっていくコードにしてもらいました。
以下がそのコードです。

python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4from __future__ import print_function 5import librosa 6import librosa.display 7import numpy as np 8import matplotlib.pyplot as plt 9import pandas as pd 10 11#DataList(wavファイルのリストを作成する) 12InDataList = pd.read_csv("InDataList.csv") 13OutDataList = pd.read_csv("OutDataList.csv") 14 15for i in len(DataList): 16 # ファイル読込 17 y, sr = librosa.load(DataList[i]) 18 19 # ファイル読込 20 #y, sr = librosa.load('BRAVE JEWEL.wav') 21 22 # 短時間フーリエ変換 23 S = np.abs(librosa.stft(y)) 24 25 # 画像出力 26 plt.figure(figsize=(10,6)) 27 librosa.display.specshow(librosa.amplitude_to_db(S, ref=np.max), y_axis='log', x_axis='time') 28 plt.title('Power spectrogram') 29 plt.colorbar(format='%+2.0f dB') 30 31 #テラテイルよりアドバイス 32 #plt.yscale('linear') # 線形スケールに設定 33 #plt.yticks(np.arange(0, 10001, 1000)) # 目盛りを [0, 1000, 2000, ..., 10000] にする。 34 35 plt.tight_layout() 36 plt.show() 37 38 #Axesを描画する領域(Figure)を作成 39 fig = plt.figure(facecolor = "lightgray") 40 41 42 #https://jonkara.net/2018/10/07/librosa/ 43 #https://python.atelierkobato.com/matplotlib/ 44 45 ##np.savetxt("ab.csv", S, delimiter=",") 46 #np.savetxt("BRAVE JEWEL.csv", S, fmt="%.1f",delimiter=",") 47 ##%0.5fだと小数点以下5桁まで出力 48 49 #データ出力 50 np.savetxt(OutDataList[i], S, fmt="%.1f",delimiter=",") 51 #%0.5fだと小数点以下5桁まで出力 52

11行目から、

python

1#DataList(wavファイルのリストを作成する) 2InDataList = pd.read_csv("InDataList.csv") 3OutDataList = pd.read_csv("OutDataList.csv")

と書いてあるのですが、これはあらかじめどのようなファイル、データを作っておけばよいのでしょうか?

プログラミングに関して、まだ知らないことばかりなので質問自体にも不備があることと思いますが、どうかよろしくお願いします。

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

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

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

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

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

guest

回答1

0

書き込むデータの形式としては

InDataList.csv

CSV

11番目に読み込むファイル名 22番目に読み込むファイル名 33番目に読み込むファイル名 4・・・

OutDataList.csv

CSV

11番目に書き込むファイル名 22番目に書き込むファイル名 33番目に書き込むファイル名 4・・・

のような形式かと思うのですが・・・

残念ながら加工してもらった部分にはバグがあるため動作しないと思います。
たぶんこういう事をやりたかったのだろうと想定して修正すると、以下のようになります。

Python

1#(略) 2 3#DataList(wavファイルのリストを作成する) 4# 修正(データをインデックスで読み込むにはこのような加工) 5InDataList = pd.read_csv("InDataList.csv", header=None).iloc[:,0] 6OutDataList = pd.read_csv("OutDataList.csv", header=None).iloc[:,0] 7 8for i in range(len(InDataList)): #<- 修正:変数名が間違い & range()追加 9 # ファイル読込 10 y, sr = librosa.load(InDataList[i]) #<- 修正:変数名が間違い 11 12 #(中略) 13 14 #データ出力 15 np.savetxt(OutDataList[i], S, fmt="%.1f",delimiter=",") 16 #%0.5fだと小数点以下5桁まで出力

ただ、個人的には入力・出力のファイルを2つ用意するよりは、1つにまとめて

DataList.csv

CSV

1INPUTFILE,OUTPUTFILE 21番目に読み込むファイル名,1番目に書き込むファイル名 32番目に読み込むファイル名,2番目に書き込むファイル名 43番目に読み込むファイル名,2番目に書き込むファイル名 5・・・

のようなデータ形式にして

Python

1#(略) 2 3#DataList(wavファイルのリストを作成する) 4DataList = pd.read_csv("DataList.csv") 5 6for i, data in DataList.iterrows(): 7 # ファイル読込 8 y, sr = librosa.load(data.INPUTFILE) 9 10 #(中略) 11 12 #データ出力 13 np.savetxt(data.OUTPUTFILE, S, fmt="%.1f",delimiter=",") 14 #%0.5fだと小数点以下5桁まで出力

のようにするのが良いかと思うのですが、そこはお好みで。。

投稿2019/10/04 09:06

magichan

総合スコア15898

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問