@suzukitakeshi19 (t suzuki)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

speech_recognitionをpyinstallerでexe化した時の動作エラーについての質問

解決したいこと

speech_recognitionをpyinstallerでexe化したいのですが、exe化すると動作エラーが発生します。仮想環境上でコードを起動するときは、speech_recognition機能は正常どおり動作します。
exe化した場合に動作を実行すると、何の動作の様子もなくプログラムが終了してしまいます。

※exe ファイルは下記コマンドで作成しています。
pyinstaller ファイル名.py --onefile

エラーを確認する方法、あるいはエラー原因がわかれば教えてください。

発生している問題・エラー

動作ボタンを押しても動作せずに、GUIがシャットダウン。
(エラー原因は確認できてないため不明)
該当箇所は下記コードの def recognize_audio(self,Filename) の部分です。

ソースコード

import pydub, os
import speech_recognition as sr
import sys
from PyQt5 import QtWidgets    
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,QWidget,QComboBox, 
     QFileDialog, QApplication,QVBoxLayout,QHBoxLayout)  

class Main(QMainWindow):
    def __init__(self):
        super().__init__()
        self.width = 450
        self.height = 200
        
        layout = QVBoxLayout()
        sub_layout = QHBoxLayout()
        
        self.textEdit = QTextEdit()
        layout.addWidget(self.textEdit)        
        self.textEdit.setText('【wav to text】 wavファイルから音声をtxtファイルに書き出します\
                              \n※wav to text機能を利用するときは外部ライブラリを利用するため\
                              \n  インターネット環境が必要です。\
                              \n\nそれぞれのファイルが存在するフォルダで本プログラムを実行してください。'
                              )

        layout.addLayout(sub_layout)
        self.text_button = QtWidgets.QPushButton('wav to text')
        self.text_button.setStyleSheet("background-color:lightblue")        
        self.text_button.clicked.connect(self.auido2text)
        sub_layout.addWidget(self.text_button)
            
        self.setGeometry(100, 100, 450, 200)
        self.container = QWidget()
        self.container.setLayout(layout)
        self.setCentralWidget(self.container)   
        self.setWindowTitle('audio text converter')
        self.show()
        
    #read wav file and Write out text to document.txt.
    def auido2text(self):
        docuFile = open('document.txt', 'w',encoding="utf-8_sig")
        
        #Loop through every file in "selected" directry
        for Filename in os.listdir('.'):
            if not Filename.endswith('.wav'):
                continue  #skip non-wav files
            text = self.recognize_audio(Filename)
            docuFile.write(text)
            docuFile.write('\n\n')
        docuFile.close()
        cwd = os.getcwd()
        self.textEdit.setText('完了しました!')
   
    
    #Write out text                       #この部分が該当する機能です。
    def recognize_audio(self,Filename):
        r = sr.Recognizer() 
        with sr.AudioFile(Filename) as source:    
            audio = r.record(source)
        text = r.recognize_google(audio, language= 'es-ES')
        return text

    
app = QApplication(sys.argv)
ex = Main()
sys.exit(app.exec_())

0 likes

2Answer

PyQt5などもexeする際にpackされてますか?
エラー文のでる標準出力を適当なtxtに出力するようにすると何のエラーが起きてるか見えるようになるかもです。

0Like

PyQt5などもexeする際にpackされてますか?
-->PyQt5もpackしています。GUI自体は表示されます。

PyQt5 exe化での「エラー文の出力のやり方」がうまくわかっていないのですが、参考リンク等ご存じであれば連絡お願いします。

0Like

Your answer might help someone💌