pythonで音声認識をしてみたいと思いソースを書いており、そのためにsoxというモジュールを使用したいのですが、pythonが認識してくれません。
pip install soxをcmdで実行した結果
Requirement already satisfied: sox in c:\users\j20703dn\anaconda3\lib\site-packages (1.4.1)
Requirement already satisfied: numpy>=1.9.0 in c:\users\j20703dn\anaconda3\lib\site-packages (from sox) (1.20.2)
となり、インストール自体はできています。
なのですが、soxのimportを行えないようです。どうすればよいでしょうか?
使用しているエディターはspyderです。
発生している問題・エラーメッセージ
SoX could not be found!
If you do not have SoX, proceed here: - - - http://sox.sourceforge.net/ - - - If you do (or think that you should) have SoX, double-check your path variables.
This install of SoX cannot process .wav files.
This install of SoX cannot process .wav files.
../data/original/jsut_ver1.1/basic5000/wav\BASIC5000_0001.wav
Traceback (most recent call last):
File "C:\Users\j20703dn\Desktop\卒業研究\卒研用ファイル\work\python_asr-main\00prepare\01prepare_wav.py", line 56, in <module>
tfm.build_file(input_filepath=wav_path_in,
File "C:\Users\j20703dn\anaconda3\lib\site-packages\sox\transform.py", line 710, in build_file
return self.build(
File "C:\Users\j20703dn\anaconda3\lib\site-packages\sox\transform.py", line 593, in build
input_format, input_filepath = self._parse_inputs(
File "C:\Users\j20703dn\anaconda3\lib\site-packages\sox\transform.py", line 496, in _parse_inputs
input_format['channels'] = file_info.channels(input_filepath)
File "C:\Users\j20703dn\anaconda3\lib\site-packages\sox\file_info.py", line 82, in channels
output = soxi(input_filepath, 'c')
File "C:\Users\j20703dn\anaconda3\lib\site-packages\sox\core.py", line 147, in soxi
shell_output = subprocess.check_output(
File "C:\Users\j20703dn\anaconda3\lib\subprocess.py", line 415, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "C:\Users\j20703dn\anaconda3\lib\subprocess.py", line 493, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\j20703dn\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in init
super(SubprocessPopen, self).init(*args, **kwargs)
File "C:\Users\j20703dn\anaconda3\lib\subprocess.py", line 858, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\j20703dn\anaconda3\lib\subprocess.py", line 1311, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
'sox' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
該当のソースコード
使用言語:python
ソースコード
-- coding: utf-8 --
ダウンロードしたwavファイルを,サンプリングレート16000Hzのデータに変換します.
また,変換したwavデータのリストを作成します.
サンプリング周波数を変換するためのモジュール(sox)をインポート
import sox
osモジュールをインポート
import os
メイン関数
if name == "main":
wavファイルが展開されたディレクトリ original_wav_dir = '../data/original/jsut_ver1.1/basic5000/wav' フォーマット変換したwavファイルを出力するディレクトリ out_wav_dir = '../data/wav' wavデータのリストを格納するディレクトリ out_scp_dir = '../data/label/all' 出力ディレクトリが存在しない場合は作成する os.makedirs(out_wav_dir, exist_ok=True) os.makedirs(out_scp_dir, exist_ok=True) soxによる音声変換クラスを呼び出す tfm = sox.Transformer() サンプリング周波数を 16000Hz に変換するよう設定する tfm.convert(samplerate=16000) wavデータのリストファイルを書き込みモードで開き,以降の処理を実施する with open(os.path.join(out_scp_dir, 'wav.scp'), mode='w') as scp_file: BASIC5000_0001.wav ~ BASIC5000_5000.wav に対して処理を繰り返し実行 for i in range(5000): filename = 'BASIC5000_%04d' % (i+1) 変換元のオリジナルデータ (48000Hz)のファイル名 wav_path_in = os.path.join(original_wav_dir, filename+'.wav') 変換後のデータ(16000Hz)の保存ファイル名 wav_path_out = os.path.join(out_wav_dir, filename+'.wav') print(wav_path_in) ファイルが存在しない場合はエラー if not os.path.exists(wav_path_in): print('Error: Not found %s' % (wav_path_in)) exit() サンプリング周波数の変換と保存を実行する tfm.build_file(input_filepath=wav_path_in, output_filepath=wav_path_out) wavファイルのリストを書き込む scp_file.write('%s %s\n' % (filename, os.path.abspath(wav_path_out)))
試したこと
コンソール上に出てきたメッセージを見て、表記されているURLからsox.exeのインストーラーをダウンロードし、走らせたのですが、それでも認識してくれませんでした。
補足情報(FW/ツールのバージョンなど)
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
Spyder5.0.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 18:20