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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

Q&A

解決済

1回答

5735閲覧

python 音声認識 ValueErrorの解決

maiden

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

0グッド

0クリップ

投稿2021/07/12 18:09

前提・実現したいこと

Colaboratory上でPythonを動かしています。
そこで、音声を学習させて、後からテストデータを照合させて正答率を見ることを試みています。
色々参考にしているのですが、以下途中で
ValueError: need at least one array to concatenate
というエラーでつまづいています。

ご教授いただければ幸いです。

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

ValueError Traceback (most recent call last) <ipython-input-22-69fdddb50088> in <module>() 22 speaker_training.append(label) # speaker_trainingにラベルを追加 23 ---> 24 word_training=numpy.concatenate(word_training) # ndarrayを結合 25 speaker_training=numpy.concatenate(speaker_training) <__array_function__ internals> in concatenate(*args, **kwargs) ValueError: need at least one array to concatenate

該当のソースコード

python

1import scipy.io.wavfile as wav 2from sklearn.svm import SVC 3import numpy 4import librosa 5import os 6 7# ルートディレクトリ 8ROOT_PATH = '/content/drive/My Drive/声優分類' 9 10# 話者の名前(各話者のデータのディレクトリ名になっている) 11speakers=['minase', 'kaori', 'yui'] 12 13word_training=[] # 学習用のFCCの値を格納する配列 14speaker_training=[] # 学習用のラベルを格納する配列 15 16# MFCCを求める関数 17def getMfcc(filename): 18 y, sr = librosa.load(filename) 19 return librosa.feature.mfcc(y=y, sr=sr) 20 21 22# 各ディレクトリごとにデータをロードし、MFCCを求めていく 23for speaker in speakers: 24 # どの話者のデータを読み込んでいるかを表示 25 print('Reading data of %s...' % speaker) 26 27 path = os.path.join(ROOT_PATH + speaker) 28 29 for pathname, dirnames, filenames in os.walk(path): 30 for filename in filenames: 31 if filename.endswith('.wav'): 32 mfcc=getMfcc(os.path.join(pathname, filename)) 33 word_training.append(mfcc.T) # word_trainingにmfccの値を追加 34 label=numpy.full((mfcc.shape[1] ,), 35 speakers.index(speaker), dtype=numpy.int) # labelをspeakersのindexで全て初期化 36 speaker_training.append(label) # speaker_trainingにラベルを追加 37 38word_training=numpy.concatenate(word_training) # ndarrayを結合 39speaker_training=numpy.concatenate(speaker_training)

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージから考えると、指定したpathに'.wav'で終わるファイルが見つからなかったように見えます。

以下の部分にprint文を入れて実行して、確認してください。

python

1 for pathname, dirnames, filenames in os.walk(path): 2 for filename in filenames: 3 print(filename) 4 if filename.endswith('.wav'): 5 mfcc=getMfcc(os.path.join(pathname, filename)) 6 word_training.append(mfcc.T) # word_trainingにmfccの値を追加 7 label=numpy.full((mfcc.shape[1] ,), 8 speakers.index(speaker), dtype=numpy.int) # labelをspeakersのindexで全て初期化 9 speaker_training.append(label) # speaker_trainingにラベルを追加 10

投稿2021/07/12 22:24

ppaul

総合スコア24666

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

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

maiden

2021/07/12 22:57

ご回答ありがとうございます。 もう一度確認したところ、パスの指定をミスしており、結果的にファイルが検知されない状況でした。 原因が分かり、助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問