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

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

新規登録して質問してみよう
ただいま回答率
85.35%
文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

解決済

1回答

998閲覧

テキストファイルを音声ファイルに転換したい

退会済みユーザー

退会済みユーザー

総合スコア0

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

2クリップ

投稿2020/06/01 00:02

編集2020/06/03 06:03

テキストファイルを音声ファイルに転換するプログラムを組んでいます。

Python

1from gtts import gTTS 2import os 3import tkinter as tk 4from playsound import playsound 5from tkinter import filedialog 6 7win = tk.Tk() 8 9def chooseFile(): 10 global content 11 file = filedialog.askopenfile(filetypes =[('Text Files','*.txt')]) 12 sFile = tk.Label(win,text=f"Selected File : {file.name}") 13 sFile.grid(row=1, column=0, columnspan=2) 14 if file is not None: 15 content = file.read() 16 return content 17 18def convert(): 19 text = content 20 speech = gTTS(text=content, lang="ja") 21 speech.save(r'C:\Users\detec\Desktop\speech.mp3'22 playsound(r'C:\Users\detec\Desktop\speech.mp3') 23 24label = tk.Label(win,text="Select File") 25label.grid(row=0, column=0, padx=8, pady=8) 26 27button = tk.Button(win,text="Choose!!",command=chooseFile) 28button.grid(row=0,column=1,padx=8,pady=8) 29 30button2 = tk.Button(win,text="Convert", command=convert) 31button.grid(row=2,column=1,columnspan=2,padx=8,pady=8) 32 33win.mainloop()

エラー文に 'cp932' codec can't decode byte 0x81 in position 10: illegal multibyte sequenceが出たのでspeech.saveの文末にencoding="utf-8"を入れましたが、やはり同様のエラーが。

どこに入れれば読み取ってくれますか??

エラー全文です

Traceback (most recent call last): File "C:\Users\detec\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "audio.py", line 15, in chooseFile content = file.read() UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 10: illegal multibyte sequence

イメージ説明

from gtts import gTTS import os import tkinter as tk from playsound import playsound from tkinter import filedialog win = tk.Tk() def chooseFile(): global content file = filedialog.askopenfile(filetypes =[('Text Files','*.txt')]) sFile = tk.Label(win,text=f"Selected File : {file.name}") sFile.grid(row=1, column=0, columnspan=2) if file is not None: content = file.read() return content def convert(): text = content speech = gTTS(text=content, lang="ja") speech.save(r'C:\Users\detec\Desktop\speech.mp3', encoding="shift-jis") playsound(r'C:\Users\detec\Desktop\speech.mp3', encoding="shift-jis") label = tk.Label(win,text="Select File") label.grid(row=0, column=0, padx=8, pady=8) button = tk.Button(win,text="Choose!!",command=chooseFile) button.grid(row=0,column=1,padx=8,pady=8) button2 = tk.Button(win,text="Convert", command=convert) button.grid(row=2,column=1,columnspan=2,padx=8,pady=8) win.mainloop()

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

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

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

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

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

y_waiwai

2020/06/01 01:01

同様のエラー、ではなく、エラーメッセージをそのままコピペで提示しましょう
退会済みユーザー

退会済みユーザー

2020/06/01 06:29

cp932' codec can't decode byte 0x81 in position 10: illegal multibyte sequenceです
TakaiY

2020/06/01 10:47

> speech.saveの文末にencoding="utf-8"を入れました とのことですが、エラー発生しているのはそこではないのではないですか? エラー全文提示いただけると、回答が得やすいと思います。
退会済みユーザー

退会済みユーザー

2020/06/03 02:41

追加しました。
Lhankor_Mhy

2020/06/03 02:51

テキストファイルの文字コードは何ですか?
退会済みユーザー

退会済みユーザー

2020/06/03 03:08

メモ帳を使用しているのでUTF-8かと思います。
Lhankor_Mhy

2020/06/03 03:36

cp932のテキストを読み込ませると、どうなりますか?
退会済みユーザー

退会済みユーザー

2020/06/03 04:58

写真のまま停止します。
Lhankor_Mhy

2020/06/03 05:10

エラーは起きないのですね。 やはり文字コードが違うのではないでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/03 05:45

しかしPythonでencodingしているので違うということはないと思うのですが・・・
Lhankor_Mhy

2020/06/03 05:49

ご提示のコードを拝見する限り、encodingを指定している部分が見当たりませんでした。
退会済みユーザー

退会済みユーザー

2020/06/03 06:04

こういうことですか? 先ほど私が申したのは、Pythonでshift-jisに指定したメモ帳に”w”しているということです。 今回のコードはエラーがなく、実行不可なので意味が分かりません。
Lhankor_Mhy

2020/06/03 06:46 編集

「Pythonでshift-jisに指定したメモ帳に”w”している」とのことですが、 ・別のPythonコードがあり、そのコードでcp932のテキストファイルを作成している。 ・上記テキストファイルを、ご提示のコードで読み込ませている。 ・だから、cp932のテキストであるはずだ。 というご主張だという理解で合っていますか?
Lhankor_Mhy

2020/06/03 07:42

文字コードの確認の仕方がお分かりでないようでしたら、こちらをお試しになってはいかがですか? https://kazo9.net/win-memo-check 当方の環境で、ご提示のコードのテキスト読み込み部分を試してみましたが、UTF-8でエラー、cp932で問題なく動作しました。 情報が不足しているので何とも言えませんが、おそらく、Dr.Kさんがcp932だと思っているテキストファイルの文字コードがUTF-8なのではないかな、と推測しています。
退会済みユーザー

退会済みユーザー

2020/06/04 15:59

ありがとうございます。 貼ってくださったHPを見て、確認するとやはりUTF-8でした。 保存の時にANSIに設定して保存してもやはり動作しません。 windowsを使っているのですが、どのようにcp932で保存すればよいですか?
Lhankor_Mhy

2020/06/05 01:11

>保存の時にANSIに設定して保存してもやはり動作しません。 >どのようにcp932で保存すればよいですか? 2020/06/03 12:36 ~ 2020/06/03 14:10 のやりとりでは、cp932ではエラーが出ていない、ということだったと思うのですが、その際のcp932ファイルはどのように準備されたのですか?
退会済みユーザー

退会済みユーザー

2020/06/05 12:45

お伝えの方法が悪くて申し訳ございません。 エラー文が出ないのは間違いありませんでした。読み込んで動作が止まってします。表示も出力もなく微動だにしないという意味です。そして私がcp932だと信じていたものはUTF-8だったのでcp932のファイルでは試していなかったことになります。そのため、今回試すために作成する必要があるのですが、できないということです。
Lhankor_Mhy

2020/06/06 02:40

とすると、UTF-8のファイルでもエラーは出ないということでしょうか? どのような状況であれば、エラーが再現するのか、整理してご提示いただけますか?
退会済みユーザー

退会済みユーザー

2020/06/06 02:57

いえ、UTF-8のファイルを入れた場合、エラー文が発生します。 テキストをANSIファイル選択し、入れた場合何も起きないという現象が起こります。 これは裏では何か保存をするための動きが起こっているのでしょうか?
Lhankor_Mhy

2020/06/06 06:32

では、読み込み部分は動作しているのではないでしょうか? 読み込みして、Convert ボタンを押したあとに動作しない、ということなのですね? mp3 ファイルは生成されていますか?
退会済みユーザー

退会済みユーザー

2020/06/06 07:24

chooseボタンからファイルを選択後、何も起こらずConvertボタンにならないといった感じです。
Lhankor_Mhy

2020/06/06 07:53

ああ、なるほど。 そこ、変数名間違ってましたよ。
退会済みユーザー

退会済みユーザー

2020/06/07 08:11

どういうことですか?
Lhankor_Mhy

2020/06/07 15:08

button2がbuttonになってます。
退会済みユーザー

退会済みユーザー

2020/06/09 08:44

できました!ありがとうございます!!!
ForestSeo

2020/06/09 11:06

自己解決にするなりして解決済みにして下さい。
退会済みユーザー

退会済みユーザー

2020/06/09 16:16

Lhankor_Mhyさま 一言コメントいただいてもよろしいですか?
Lhankor_Mhy

2020/06/10 01:03

はい、どのようなコメントでしょうか?
退会済みユーザー

退会済みユーザー

2020/06/10 04:28

BAにするためのものです。 回答しました。といただければよろしいかと。
Lhankor_Mhy

2020/06/10 04:30

いやいや、大してお役立ててませんでしたから、自己解決でお願いします。
退会済みユーザー

退会済みユーザー

2020/06/10 05:20

そうですか。承知いたしました。心から感謝いたします。
guest

回答1

0

ベストアンサー

UTF-8とANSIのencoding形式の間違いとbutton2→buttonの間違い二点。

投稿2020/06/10 05:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問