###pythonのプログラムでsoxを利用したい
vscodeで音声認識をしたくその過程でsoxを利用したいのですが下記のようなエラーメッセージ出たので解決方法を知りたいです
発生している問題・エラーメッセージ
python
1'sox' is not recognized as an internal or external command, 2operable program or batch file. 3SoX could not be found! 4 5 If you do not have SoX, proceed here: 6 - - - http://sox.sourceforge.net/ - - - 7 8 If you do (or think that you should) have SoX, double-check your 9 path variables. 10 11../data/original/jsut_ver1.1/basic5000/wav\BASIC5000_0001.wav 12This install of SoX cannot process .wav files. 13This install of SoX cannot process .wav files. 14Traceback (most recent call last): 15 File ".\01prepare_wav.py", line 54, in <module> 16 tfm.build_file(input_filepath=wav_path_in, 17 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages\sox\transform.py", line 710, in build_file 18 return self.build( 19 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages\sox\transform.py", line 593, in build 20 input_format, input_filepath = self._parse_inputs( 21 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages\sox\transform.py", line 496, in _parse_inputs 22 input_format['channels'] = file_info.channels(input_filepath) 23 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages\sox\file_info.py", line 82, in channels 24 output = soxi(input_filepath, 'c') 25 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\site-packages\sox\core.py", line 147, in soxi 26 shell_output = subprocess.check_output( 27 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 411, in check_output 28 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, 29 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 489, in run 30 with Popen(*popenargs, **kwargs) as process: 31 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 854, in __init__ 32 self._execute_child(args, executable, preexec_fn, close_fds, 33 File "C:\Users\Owner\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1307, in _execute_child 34 hp, ht, pid, tid = _winapi.CreateProcess(executable, args, 35FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
該当のソースコード
python
1 2import sox 3 4 5import os 6 7 8if __name__ == "__main__": 9 10 original_wav_dir = '../data/original/jsut_ver1.1/basic5000/wav' 11 12 out_wav_dir = '../data/wav' 13 14 out_scp_dir = '../data/label/all' 15 16 os.makedirs(out_wav_dir, exist_ok=True) 17 os.makedirs(out_scp_dir, exist_ok=True) 18 19 20 tfm = sox.Transformer() 21 22 tfm.convert(samplerate=16000) 23 24 25 with open(os.path.join(out_scp_dir, 'wav.scp'), mode='w') as scp_file: 26 27 for i in range(5000): 28 filename = 'BASIC5000_%04d' % (i+1) 29 30 wav_path_in = os.path.join(original_wav_dir, filename+'.wav') 31 32 wav_path_out = os.path.join(out_wav_dir, filename+'.wav') 33 34 print(wav_path_in) 35 36 if not os.path.exists(wav_path_in): 37 print('Error: Not found %s' % (wav_path_in)) 38 exit() 39 40 41 tfm.build_file(input_filepath=wav_path_in, 42 output_filepath=wav_path_out) 43 44 45 scp_file.write('%s %s\n' % 46 (filename, os.path.abspath(wav_path_out))) 47
###試したこと
調べてみると同じエラーメッセージが出ている人がいてその人が解決したように自分も同じ方法をしてみました.
その人がしたこと
- soxをインストールして同じディレクトリ内にsoxを移動
また自分はコマンドライン上に下記のコードを打ち込みパスを通そうとしましたが下記のようなエラーメッセージが発生しました
打ち込んだコード path %path;C:Program Files (x86)\sox-14-4-2
発生したエラー path : The term 'path' is not recognized as the name of a cmdlet, function, script file, or operab le program. Check the spelling of the name, or if a path was included, verify that the path is cor rect and try again. At line:1 char:1 + path %path;C:Program Files (x86)\sox-14-4-2 + ~~~~ + CategoryInfo : ObjectNotFound: (path:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException x86 : The term 'x86' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is corre ct and try again. At line:1 char:29 + path %path;C:Program Files (x86)\sox-14-4-2 + ~~~ + CategoryInfo : ObjectNotFound: (x86:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
となり解決できませんでした
結局原因すらわからず困っています
特にsoxのインストールがうまくいっていないのかパスが通っていないのかすらわかりません.コードはいただいたものなので間違って位はいないと思います.
よろしくお願いします
コメントを受けて追記
soxのダウンロードが上手くいっていない気がします
エラー文に乗っているURLからsoxをダウンロードをしてインストールしたのですが下記のような状況になりました.
- インストールすると追加される二つのショートカットが何かわからず放置していたのですが,クリックしてみると一瞬だけ読み込んですぐに落ちるみたいな状況で機能していません
- 移動したディレクトリとは今実行しているコードのディレクトリである00prepareと同じ場所に移動してあります上記の画像のように
補足情報 (FW/ツールのバージョンなど)
vscode - ver 1.63.2
回答1件
あなたの回答
tips
プレビュー