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

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

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

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

Python

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

Q&A

解決済

1回答

3714閲覧

pythonでsoxを利用できません

toommauts

総合スコア2

Anaconda

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

Python

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

0グッド

0クリップ

投稿2021/10/14 20:07

前提・実現したいこと

「pythonで学ぶ音声認識」という本を勉強していて、soxをインポートするソースコードが登場するのですが、
soxのモジュールを認識してくれません。

sox 本体のインストールと、pipによってsoxのラッパーのインストールはできています。

調べたところ、同じことで悩んでいる方がいてPATHを通すことで解決したようなのですが、どこにPATHを通せば良いのかがわかりません。どうすれば良いでしょうか?

使用しているOSはMacOSで、anacondaで仮想環境を立ててjupyternotebookでソースコードを書いています。

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


ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-e26edfe5b398> in <module> 7 8 # サンプリング周波数を変換するためのモジュール(sox)をインポート ----> 9 import sox 10 11 # osモジュールをインポート ModuleNotFoundError: No module named 'sox'

該当のソースコード

python

1# -*- coding: utf-8 -*- 2 3# 4# ダウンロードしたwavファイルを,サンプリングレート16000Hzのデータに変換します. 5# また,変換したwavデータのリストを作成します. 6# 7 8# サンプリング周波数を変換するためのモジュール(sox)をインポート 9import sox 10 11# osモジュールをインポート 12import os 13 14# 15# メイン関数 16# 17if __name__ == "__main__": 18 19 # wavファイルが展開されたディレクトリ 20 original_wav_dir = '../data/original/jsut_ver1.1/basic5000/wav' 21 22 # フォーマット変換したwavファイルを出力するディレクトリ 23 out_wav_dir = '../data/wav' 24 25 # wavデータのリストを格納するディレクトリ 26 out_scp_dir = '../data/label/all' 27 28 # 出力ディレクトリが存在しない場合は作成する 29 os.makedirs(out_wav_dir, exist_ok=True) 30 os.makedirs(out_scp_dir, exist_ok=True) 31 32 # soxによる音声変換クラスを呼び出す 33 tfm = sox.Transformer() 34 # サンプリング周波数を 16000Hz に変換するよう設定する 35 tfm.convert(samplerate=16000) 36 37 # wavデータのリストファイルを書き込みモードで開き,以降の処理を実施する 38 with open(os.path.join(out_scp_dir, 'wav.scp'), mode='w') as scp_file: 39 # BASIC5000_0001.wav ~ BASIC5000_5000.wav に対して処理を繰り返し実行 40 for i in range(5000): 41 filename = 'BASIC5000_%04d' % (i+1) 42 # 変換元のオリジナルデータ (48000Hz)のファイル名 43 wav_path_in = os.path.join(original_wav_dir, filename+'.wav') 44 # 変換後のデータ(16000Hz)の保存ファイル名 45 wav_path_out = os.path.join(out_wav_dir, filename+'.wav') 46 47 print(wav_path_in) 48 # ファイルが存在しない場合はエラー 49 if not os.path.exists(wav_path_in): 50 print('Error: Not found %s' % (wav_path_in)) 51 exit() 52 53 # サンプリング周波数の変換と保存を実行する 54 tfm.build_file(input_filepath=wav_path_in, 55 output_filepath=wav_path_out) 56 57 # wavファイルのリストを書き込む 58 scp_file.write('%s %s\n' % 59 (filename, os.path.abspath(wav_path_out))) 60

試したこと

sox本体とラッパーの再インストール

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

python 3.8.8

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

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

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

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

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

guest

回答1

0

ベストアンサー

Jupyterで動いているPythonとsoxをインストールしたPythonが違っているのでしょう。
そのため、Jupyterで動いているPythonにはまだsoxがインストールされていません。

Jupyterで以下を実行して見てください。

Python

1import sys 2print(sys.executable) 3exit()

これで表示されるPythonが仮に'/aaa/bbb/ccc/python3'だとした場合、

Python

1/aaa/bbb/ccc/python3 -m conda install -c conda-forge sox

でインストールしてください。
Anacondaの場合、pipでインストールすることは環境が壊れることがあるのでやめた方が良いでしょう。

conda-forge / packages / sox 14.4.2を参照してください。

投稿2021/10/14 22:27

ppaul

総合スコア24666

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問