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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

0回答

955閲覧

librosaを使って、PCM形式の音声データを書き出したい

Uta_fai

総合スコア18

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2018/11/09 10:31

前提・実現したいこと

librosaによってロードし加工したデータを、PCM形式にして書き出したいです。
このコードはlibrosaのリファレンス
https://librosa.github.io/librosa/ioformats.html
をそのままコピーして使用しています。

発生している問題・エラーメッセージ

start ./angry <class 'numpy.float32'> --------------------------------------------------------------------------- ParameterError Traceback (most recent call last) <ipython-input-12-6fb6406219a5> in <module>() 34 label=os.path.join(path,'pangry/') 35 dangry=os.path.join(label,'angry/') ---> 36 division (angry,angryl,dangry) 37 normalo=os.path.join(label,'normal/') 38 happyo=os.path.join(label,'happy/') <ipython-input-12-6fb6406219a5> in division(bb, base_dir, opath) 27 maxv = np.iinfo(np.int16).max 28 librosa.output.write_wav( ---> 29 wpath, (y * maxv).astype(np.int16), rate 30 ) 31 ~\Anaconda3\lib\site-packages\librosa\output.py in write_wav(path, y, sr, norm) 221 222 # Validate the buffer. Stereo is okay here. --> 223 util.valid_audio(y, mono=False) 224 225 # normalize ~\Anaconda3\lib\site-packages\librosa\util\utils.py in valid_audio(y, mono) 157 158 if not np.issubdtype(y.dtype, np.floating): --> 159 raise ParameterError('data must be floating-point') 160 161 if mono and y.ndim != 1: ParameterError: data must be floating-point

該当のソースコード

import wave import struct from scipy import fromstring, int16 import os import librosa import soundfile as sf import numpy as np path='./' angry=os.path.join(path,'angry') angryl = os.listdir(angry) happy=os.path.join(path,'happy') happyl = os.listdir(happy) normal = os.path.join(path,'normal') normall= os.listdir(normal) def division (bb,base_dir,opath): #bb=file position base_dir=file list,opath=output print(bb) for dir in base_dir: apath=os.path.join(bb,dir) x,fs = librosa.load(apath,sr=44100) y,index=librosa.effects.trim(x,top_db=60) print(type(y[0])) rate = 44100 wpath=opath+dir maxv = np.iinfo(np.int16).max librosa.output.write_wav( wpath, (y * maxv).astype(np.int16), rate ) print('start') label=os.path.join(path,'pangry/') dangry=os.path.join(label,'angry/') division (angry,angryl,dangry) normalo=os.path.join(label,'normal/') happyo=os.path.join(label,'happy/') division(normal,normall,normalo) division(happy,happyl,happyo) print('finish')

試したこと

レファレンスに書いてある
sf.write('stereo_file.wav', data, samplerate, subtype='PCM_24')
を試しましたが、だめでした。

補足情報(FW/ツールのバージョンなど)

Anacondaの最新バージョンを使用しています。
環境はwindows10です。loadしてるファイルはwavファイルです。
またPCM形式に一括でファイル変換できる手法があるなら教えていただきたいです。

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

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

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

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

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

can110

2018/11/10 22:49

参考コードのより直接的な場所(直リンク)、コードの説明を追記されると回答得られやすくなるかと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問