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

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

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

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

Q&A

0回答

2350閲覧

pysptkを使った音声解析

lefirea

総合スコア17

Python 3.x

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

0グッド

0クリップ

投稿2018/09/07 05:10

前提・実現したいこと

pysptkを使ってwavファイルを読み込んで解析して、そのデータをwavファイルを復元したい。

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

読み込むファイルがモノラルだった場合は問題なく実行できるが、ステレオファイルを使うと失敗した。
そこで、ステレオをモノラルに変換してみたが、それでもエラーが出る。

RuntimeError: failed to compute mgcep; error occured in theq

該当のソースコード

python

1# -*- coding: utf-8 -*- 2 3import numpy as np 4import pysptk 5import librosa 6import librosa.display as disp 7import wave 8import audioop 9from pylab import * 10from scipy.io import wavfile 11from pysas import excite 12from pysptk.synthesis import MGLSADF, Synthesizer 13 14def GetWaveChannels(filename): 15 wr=wave.open(filename, 'rb') 16 ch=wr.getnchannels() 17 sw=wr.getsampwidth() 18 wr.close() 19 return ch, sw 20 21def pplot(sp,envelope,title='no title'): 22 plot(sp, color='blue', linewidth=2) 23 plot(20.0/np.log(10)*envelope, color='red', linewidth=3) 24 xlim(0,len(sp)) 25 26wavefile='materials/stereo.wav' 27 28fs,x=wavfile.read(wavefile) 29ch,sw=GetWaveChannels(wavefile) 30if ch==2: #ステレオならモノラルに変換 31 x=np.frombuffer(audioop.tomono(x, sw, 1, 1), dtype=np.int16) 32 33frame_length=1024 34hop_length=80 35order=25 36alpha=0.41 37stage=5 38ganma=-1.0/stage 39 40frames=librosa.util.frame(x, frame_length=frame_length, hop_length=hop_length).astype(np.float64).T 41frames*=pysptk.hamming(frame_length) 42 43f0=pysptk.swipe(x.astype(np.float64), fs=fs, hopsize=hop_length, min=50, max=500) 44gen=excite.ExcitePulse(fs, hop_length, False) 45sourceExcitation=gen.gen(f0) 46 47mc=np.apply_along_axis(pysptk.mgcep, 1, frames, order, alpha, ganma) 48#このmcがメルケプストラムデータになる 49 50#sp=pysptk.mgc2sp(mc, alpha, ganma, frame_length) 51#logH=np.apply_along_axis(pysptk.mgc2sp, 1, mc, alpha, 0.0, frame_length).real 52#このlogHがスペクトラル包絡データになる, 53#""" 54 55""" 56#解析結果をwavファイルに変換する。 57b=np.apply_along_axis(pysptk.mgc2b, 1, mc, alpha, ganma) 58synthe=Synthesizer(MGLSADF(order=order, alpha=alpha, stage=stage), hop_length) 59xSynthe=synthe.synthesis(sourceExcitation, b).astype(np.int16) 60 61wavfile.write('xsynthe.wav', fs, xSynthe) 62#"""

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

・環境
win10 64bit
Anaconda3(Spyder)

・pysptkについて
http://r9y9.github.io/blog/2015/09/06/pysptk/

どうやればステレオでも処理ができるのか教えてください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問