見出し画像

pythonにつまづく一日

皆さんどうも。おはばんちゃ(´・ω・`)ノシ
HaruAkiです。

本業の話ですが
やってることは副業につながることなので
副業日誌として書いてみます。


今、作ってるもの


昨日の記事の通り
現在、本業で
「音声入力プログラム」を作ってます。

python全くの未経験から
参考書一通りやってみて
実際に初めて
実用的なプログラム組んでます。

つい先週から
「chatGPT」を活用しはじめまして
より、効率が上がっている最近です。

しかしながら
全てが全て、chatGPTで完結するわけもなく
やっぱりつまづくところあるんですよね。

一昨日、つまづき始めたとある問題。
今朝から再度、悩んでいますが
結局解決することなく
むしろ後退したような
そんな今日でした。。。

anaconda入れ直してみたり
ライブラリ見直してみたり
そんなことしてたので
コード的には全く進んでいないという(笑


作成中の中身について


実際に作成中のコードは
あくまで職場のPCの中なので
原文、ここで掲載はできませんが
ほぼchatGPTパイセンが作ってくれてるものなので
似たようなもの、
以下に掲載します。

import speech_recognition as sr
import keyboard

def start_speech_input():
    r = sr.Recognizer()
    mic = sr.Microphone()

    with mic as source:
        print("音声入力を開始します。")
        r.adjust_for_ambient_noise(source)

        while True:
            try:
                audio = r.listen(source)
                text = r.recognize_google(audio, language="ja-JP")
                print(text, end="", flush=True)

                keyboard.write(text)

                if "おわり" in text:
                    print("\n音声入力を終了します。")
                    break

if __name__ == "__main__":
    start_trigger = input("「スタート」と発声してください: ")
    if start_trigger == "スタート":
        start_speech_input()

「speech_recognition」での音声認識
そこで拾ったテキストを
「keyboard」を使って
カーソルアクティブに書き込む
っていう内容です。

追加として
「認識開始」「認識終了」も
音声で操作したい。

「認識終了」といっても
exeをそのまま閉じるわけではなく
また再度「開始」っていえば
書き込み開始できる
そういう形にする予定。

そうしないと
いちいちexeの実行、
度々し直す不便がでちゃうので
「認識終了」は実際のところ
「次の開始待機」みたいな
そんな立ち位置になるよう考えてます。

(´・ω・`)y-~~  ・・・。

なんか職場で作ってるのといくつか違う(笑
自分が作ったコードと
「スタート発声」の記述が違いますね。

これなら上手くいくのかなもしや。。
明日試そう。。。

・・・と、そんな今の気づきはさておき
次に行きます。



試したり確認したこと


参考書の時点、
はたまた数日前までの時点
現在作成中のプログラムとは関係なく
ただ単に
「speech_recognition」のみでのテスト。
その時点で
「音声認識」が作動するは確認済

すなわち
必要なライブラリや環境は
揃っていることが確認できています。

その上で
「発声による開始・終了」を付け加えた

しかし、上手くいかない。

むしろ数日前まで動いてたものが
動かなくなった。

anacondaの再インストールなんかも試しました。
ちょうど昨日とか
仮想環境の追加とか削除とか
ゴチャゴチャやってしまったので
それによる影響もあるとおもったので。

綺麗に入れ直して
再度試しましたが
やはりエラー。。。

うーむ。。。

speech_recognitionに
関連するライブラリ(?)として
「pyAudio」も必要だとおもいますが
これは現在、condaコマンドで対応してないっぽい?

故に「pyAudio」については
pipでいれるしかない。

これによってanaconda環境だと
condaとpipが混在する状況となり
良い状況とはいえないわけですが
anaconda環境で作ってたので
仕方なくって感じになってます。

これも原因なのかなと疑っての
再インストールでもありました。


疑問点


ここで本題。
一昨日から出始めた謎のエラー。
どうやらflacがインストールされてない?
みたいな内容なんですよね。
「oserror」flac なんちゃら・・・みたいなの。

実際に作成コードが手元に無いので
そのエラー文、掲載できないのが歯がゆい
ググっても同様なエラー
みつからんのですよ。

実際にテストしてみて
発声した瞬間に
そのエラーが出ます。
引っかかる場所は
GoogleAPIのところ。

「r.recognize_google(audio, language="ja-JP")」

実施に取得した音声をgoogleのAPIだかに送るのに
flac形式で送ってるらしい?

その変換が上手く言ってないよ!
みたいなエラーっぽいのです。
flacコンバーターが入ってませんよみたいな。

単にspeech_recognitionのテストやら
お試ししたときには
こんなエラーなかったのに
ちょこっと修正したら
突然出るようになっちゃいました。

(´・ω・`)y-~~ 音声系のソフト、
特別にいじってもいないんだけどなぁ。。。

思い切って
anaconda再インストールしてみましたが
それでもやっぱり出るんですよ。。。

とはいえ
とりあえずエラーの言う通り
出来ることをやってみた。

任意の場所にフォルダをぶち込んで
環境変数のPATHを指定。

それでひとまず
プロンプト上からflacが認識されていることを確認。

しかしながら
それでもやっぱりエラーが出る。。


また明日、色々試します


単にコーディングにミスがあるのかなと。

現時点ではその結論に至っているので
明日はとことん
コードの配置や構成、変えてみる予定でいます。

もともと「speech_recognition」の
基礎的なミニマルなプログラムでは
テキスト表示も書き込みも
確かに動作確認とれているので
このflacやらのエラーではない気がするんですよね。

chatGPTパイセンのコード
そのまま転用したことでの
今回の問題発生ってのは確実なので
また数日前に戻って
小さいコードから試そうと思います。

今のコードに固執するのも
宜しくないですしね。

(´・ω・`)y-~~ まぁ、こういう壁にぶち当たりながら
自己解決していくの、嫌いじゃないです(笑

こういうつまづきあったほうが
より成長しますからね。
自分がわからないところ。
どこからどこまで理解しているのか?
それらがハッキリするので
分からんところ、とこんとん調べたり
試してみたりするようになるのでね。

いろんなこと試せば
何かしら動きやら、違う挙動が起きるはず。
その差を考え抜けば
自然と答えが見つかると思うんですよね。

引き続き、勉強です。



この記事が気に入ったらサポートをしてみませんか?