いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】テキストを読み上げたい

・お題:先日の記事で作成したテキストを、読み上げライブラリを使って読み上げたい。また、読み上げデータをgoogle driveに保存したい。

 

・gTTSというライブラリを使った。pyttsx3というライブラリも試してみたが、gTTSの方が良い感じに読んでくれたように感じたため。

 

・例えば英語ならこんな感じ。

#テキストを適当に作成する。今回のテキストはChatGPTで作成したもの。

test = "Cancer treatment is evolving with a multifaceted approach including surgery, chemotherapy, immunotherapy, and more."+\
"Targeted and immunotherapies are advancing, and precision medicine tailors treatment to a patient's genetic profile."+\
"Challenges like resistance, toxicity, and equitable access persist in cancer care."+\
"The future holds promise with gene therapy, early detection, AI, and enhanced prevention efforts in cancer treatment and prevention."

 

from gtts import gTTS #読み込み
speech = gTTS(text=test, lang='en', slow = False) #読み上げ
speech.save('C:\\Users\\choro\\Documents\\Test\\english.mp3') #mp3ファイルとして保存。

 

・音声データの貼り付け方が分からない。。が、英語が喋れない私からするとなかなか流暢な読み上げに感じた。次に、日本語でやってみる。

 

test = "がん治療は手術、化学療法、免疫療法など多面的なアプローチで進化中。"+\
"標的療法と免疫療法は特に進展し、精密医療は患者の遺伝子プロファイルに基づいて個別治療を提供。"+\
"耐性、毒性、アクセスの課題は依然存在し、最新治療への公平なアクセスが必要。"+\
"未来では遺伝子療法、早期発見、人工知能、予防の強化により、がん治療と予防が進化する見込み。"

 

from gtts import gTTS
speech = gTTS(text=test, lang='ja', slow = False)
speech.save('C:\\Users\\choro\\Documents\\Test\\japanese.mp3')

 

・いかにも人工音声という読み上げになった。英語に比べるとかなりカクカクした雰囲気に思ったけれど、それは私が日本人だからかもしれない。漢字の読みがかなり正確だったことに驚いた。

 

・保存先にGoogle Driveを指定することで、音声データをそのままクラウドに上げ、スマホからアクセスできるようになる。

・まず、PCにGoogle Driveをインストールする。

www.google.com

・すると、Gドライブが出現する。

・あとは、保存先にGドライブを指定する。
speech.save('G:\\マイドライブ\\Test\\japanese.mp3')

 

 

おわり

 

 

【Python】【ChatGPT】ChatGPTを使いたい

・お題:Pythonから英文を投げて、まとめて日本語にしてもらいたい。

 

・ChatGPTはOpenAIというところが開発した対話型AIで、質問に答えてくれたり、言葉でできるお願いをかなえてくれたりするらしい。

・今回でいうと、「以下の英語を箇条書き3点で要約して日本語で出力してください。英文~~~」と入力すれば、箇条書きにして日本語で提示してくれる。

 

・アカウントを作成してログインし、適当に英文を要約して日本語で出させてみた。

入力(これ自体がChatGPTで作成させた文章なので、論文ではない)

以下略。。

 

お願い「あなたはプロの翻訳者です。文章の繋がりを関連付け、先の英文を自然な日本語に要約してください。その際に、文章を箇条書き4点で要約し、各項目は100文字程度にしてください。」

 

・これはWebブラウザ上で使えるのだけれど、コピペを繰り返すのはめんどくさいので、Pythonから英文をChatGPTに投げて、レスポンスを返してもらうことにする。

 

・その際に、APIキーというのを使ってアクセスすることになる。APIキーを使ってChatGPTを利用する際は、従量課金制でお金がかかるので、少し気を付ける必要がある。

openai.com

・私が使った機能の費用感はこんな感じ。あくまでブログ執筆時点の情報。

・単位が独特過ぎて訳が分からない。使い過ぎを制限する機能もちゃんとある(あくまでブログ執筆時点の情報)。これがないととりあえずやってみようと思わなかったかも。。

 

・以下、覚えている範囲で流れのメモ。もしかしたら間違えているかも。

①アカウント作成。

API Key発行(Create new secret key)。なお、API Keyは悪用を避けるため、他人に教えてはいけない。

・この時点で「発行できたし無料で使えるのか?」と思って試してみたが、私の場合はうまくいかなかった。

③クレジットカード登録。多分ここのところ。最初に5ドルチャージする必要がある。まずはこの5ドルから減っていくみたい。

Python上でOpenAIのパッケージを使って、APIを入力して指令を送れば答えてくれる。

Python上で実行するコードは、例えば以下のような感じ。

import openai

def gpt_ans(content):
    openai.api_key = "先ほど発行したAPIキー"
    response = openai.ChatCompletion.create(model = "gpt-3.5-turbo",
                                            messages=[{"role": "user",
                                                       "content": content}],
                                            max_tokens = 2048)
    return response.choices[0]["message"]["content"].strip()

 

gpt_ans("ChatGPTのすごいところを日本語200文字程度で教えてください。")

 

と入力すると、以下が返ってきた。

'ChatGPTのすごいところは、自然言語処理の高度な能力にあります。機械が人間のように文章を生成し、質問に答え、会話をすることが可能です。ChatGPTは膨大なデータを学習し、柔軟な応答を提供できます。また、複数の文章や文脈から情報を引用し、洞察に基づいた回答を生成することも可能です。さらに、ChatGPTは進化し続けており、ユーザーフィードバックに基づいて改善されています。その結果、信頼性と実用性が向上しています。ChatGPTは、様々なタスクに使える万能なツールであり、言語処理技術の進歩を象徴しています。'

 

凄い時代になったものです。。

 

・以前の記事で取得した論文AbstractをChatGPTに投げて、日本語の箇条書きにすれば良い。

「あなたはプロの翻訳者です。手順に従って以下の文章を要約してください。~~~~~。手順:要約を4個の箇条書きで示し、一つの箇条書きは100字程度の文章にしてください。また、自然な日本語に翻訳してください。」

などでそれっぽく返してくれる。

 

・論文Abstract程度の長さの英文を10個、同様の処理に供した場合、ブログ執筆時点で0.02~0.03ドル程度の費用が掛かった。1か月1ドルに収めたいのであれば、300個/月程度の使用頻度に収めれば良さそうな雰囲気。もちろん、入出力の仕方・長さ、使用するモデル、OpenAI側の価格改定など、諸々の条件で費用は変わることに注意は必要。

 

つづく。

 

【Python】論文情報を取得したい

・お題:Pythonで環境構築して、Pubmedから論文情報をとってきたい。

 

・まずはAnaconda Promptで環境構築した。すぐに忘れるので、メモしておく。

#python=3.10で環境構築
conda create -n kikitai python=3.10

 

#仮想環境に入る
activate kikitai

 

#ライブラリをインストール
conda install jupyterlab -y
conda install ipykernel -y
conda install pandas -y
pip install openai #OpenAI用パッケージ

pip install gTTS #音声変換用パッケージ

 

#仮想環境のカーネルをJupyterに追加
python -m ipykernel install -–user -–name=kikitai

 

#カーネルリストを確認
jupyter kernelspec list

 

・jupyterlabを立ち上げ、Pubmedから論文情報をとって来る。コードは以下の記事を参考にさせて頂いた。

lifesciencehack-ai.hatenablog.com

 

Pubmedから論文情報を引っ張ってくる前段階として、Pubmed側の規約を見ておく。あんまり負荷の大きい操作はダメ。私の用途は数が限られているし、リクエストをそんなに密に送ることもないが、大規模な操作は気を付ける。

www.ncbi.nlm.nih.gov

 

・実際のコードは参考記事とほぼ同じなので、元記事をご参照いただければと思う。私の場合、time.sleepを1秒に設定して、抜き出す情報はPubmed ID、Title、Pubdate、Abstractだけにした。

・試しに、termをcancerにして走らせてみると、以下のdfが得られた。

 

・次に、このAbstractをChatGPTでまとめて、日本語に翻訳するのだけれど、キリが悪いのでいったん終わる。

 

つづく