お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2024-07-28 06:36:37

Ueda_Katuhiko
メンバ
登録日: 2013-04-20

Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

Pythonスクリプトで py3_tts モジュールをインポートしようとすると、
ModuleNotFoundError: No module named 'py3_tts' というエラーが発生します。


lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:    20.04
Codename:    focal

python3 -V
Python 3.8.10


py3-tts パッケージのインストールは成功しているが、実際のモジュールコードが
含まれていないため、インポート時に ModuleNotFoundError エラーが発生します。


切り分け状況
1. インストール状況の確認
初回のインストール時、 py3-tts を pip でインストール。
インストールが成功したが、インポート時に ModuleNotFoundError が発生。

2. 再インストール
キャッシュをクリアし、再インストールを試みる。
pip uninstall py3-tts でアンインストール後、 pip install --no-cache-dir py3-tts で再インストール。
インストールが成功したが、同じエラーが発生。

3. インストールディレクトリの確認
インストールされているディレクトリを確認。
/usr/local/lib/python3.8/dist-packages/py3_tts-3.5.dist-info が存在することを確認。
しかし、 py3_tts ディレクトリ自体が存在しない。

4. パッケージ内容の確認
py3_tts-3.5.dist-info ディレクトリ内には INSTALLER, LICENSE, METADATA, RECORD, REQUESTED, WHEEL, top_level.txt ファイルが存在。
しかし、これらのファイルはパッケージのメタデータで実際のモジュールコードではない。

4-1. 実際の py3_tts モジュールのコードが存在しないことの確認
(1). インストールされたパッケージの内容を確認するスクリプト
 以下のスクリプトを実行して、インストールされたパッケージの内容を確認し、モジュールが
 正しくインストールされているかどうかを確認しました。
 下記の結果から、 py3_tts-3.5.dist-info ディレクトリ内にはメタデータファイルのみが存在し、
 実際の py3_tts モジュールのコードが存在しないことが確認できました。

import os
package_path = "/usr/local/lib/python3.8/dist-packages/py3_tts-3.5.dist-info"
if os.path.exists(package_path):
    print(f"'{package_path}' ディレクトリが存在します。")
    print("ディレクトリの内容を表示します:")
    print(os.listdir(package_path))
else:
    print(f"'{package_path}' ディレクトリが存在しません。")

このスクリプトを実行すると、次の出力が得られました:

'/usr/local/lib/python3.8/dist-packages/py3_tts-3.5.dist-info' ディレクトリが存在します。
ディレクトリの内容を表示します:
['INSTALLER', 'LICENSE', 'METADATA', 'RECORD', 'REQUESTED', 'WHEEL', 'top_level.txt']

(2). 手動でのディレクトリ内容の確認
 さらに、手動でディレクトリの内容を確認するために以下のコマンドを実行しました。

 ls /usr/local/lib/python3.8/dist-packages/py3_tts-3.5.dist-info
 このコマンドの出力も次のようになりました。

 INSTALLER  LICENSE  METADATA  RECORD  REQUESTED  WHEEL  top_level.txt

 ここでも、実際の py3_tts モジュールのコードは見つかりませんでした。

3. モジュールのインポートをテスト
インポートテスト用のスクリプトを実行して、モジュールが正しくインポートされるかどうかを確認しました。

以下スクリプトを実行すると、以下のエラーメッセージが表示されました。

”モジュールが見つかりません: No module named 'py3_tts'”

try:
    import py3_tts
    print("py3_tts モジュールが正常にインポートされました。")
except ModuleNotFoundError as e:
    print(f"モジュールが見つかりません: {e}")

この結果からも、 py3_tts モジュールのコードが存在しないことが確認できました。

オフライン

 

#2 2024-07-28 06:41:25

Ueda_Katuhiko
メンバ
登録日: 2013-04-20

Re: Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

pip show py3-ttsが出力sれることは一応見ました

オフライン

 

#3 2024-07-28 09:41:16

elliptic
メンバ
登録日: 2020-03-05

Re: Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

pipでインストールするパッケージ名はpy3-tts、
python3でインポートするモジュール名はpyttsx3です。

コード:

$ pip install py3-tts
$ python3
>>> import pyttsx3

py3-tts PyPI
https://pypi.org/project/py3-tts/

オフライン

 

#4 2024-07-28 10:03:03

Ueda_Katuhiko
メンバ
登録日: 2013-04-20

Re: Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

なるほど参考になりました。ありがとうございます。試してみます

オフライン

 

#5 2024-08-03 21:29:04

Ueda_Katuhiko
メンバ
登録日: 2013-04-20

Re: Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

elliptic による投稿:

pipでインストールするパッケージ名はpy3-tts、
python3でインポートするモジュール名はpyttsx3です。

コード:

$ pip install py3-tts
$ python3
>>> import pyttsx3

py3-tts PyPI
https://pypi.org/project/py3-tts/

エラーなく動作しました。情報ありがとうございます。

ただ、以下のスクリプトで日本語音をmp3に保存しようとすると日本語に出きません。
import pyttsx3

# 音声エンジンの初期化
engine = pyttsx3.init()

# 音声エンジンの設定(日本語に対応していない場合、英語の音声を使用)
engine.setProperty('rate', 150)  # 読み上げ速度を設定(オプション)

# 日本語テキストを MP3 ファイルとして保存
def save_to_mp3(text, filename):
    # 音声合成の準備
    engine.save_to_file(text, filename)
    # 音声合成を実行
    engine.runAndWait()

# 保存する日本語テキストとファイル名を指定
text = "こんにちは、これはテストです"
filename = "output.mp3"

# MP3 ファイルとして保存
save_to_mp3(text, filename)

print(f"音声を {filename} に保存しました。")


意味をなさない音になります。open_jtalkを入れずにライブラリを
入れ替えるだけで、日本語を使える方法を
見かけたんですが、ちょっと見つかりません

オフライン

 

#6 2024-08-03 21:41:11

Ueda_Katuhiko
メンバ
登録日: 2013-04-20

Re: Pythonスクリプトで py3_tts モジュールをインポートでModuleNotFoundError: No module named

espeakをespeak-ngに交換することでした。試してみます

オフライン

 

Board footer

Powered by FluxBB