Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from PIL import Image | |
| import numpy as np | |
| import io | |
| import openai | |
| from gTTs import gTTS | |
| import tempfile | |
| import os | |
| # 请将你的 OpenAI API 密钥放在这里 | |
| # openai.api_key = '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' | |
| # 功能一:拍照功能 | |
| st.title("拍照并处理图片") | |
| picture = st.camera_input("拍照") | |
| if picture: | |
| # 功能二:将拍照后的照片分辨率设置成300x300像素 | |
| img = Image.open(picture) | |
| img = img.resize((300, 300)) | |
| st.image(img, caption="Resized Image", use_column_width=True) | |
| # 将图片保存到内存中 | |
| img_byte_arr = io.BytesIO() | |
| img.save(img_byte_arr, format='PNG') | |
| img_byte_arr = img_byte_arr.getvalue() | |
| # 功能三:上传照片并生成文字结果 | |
| st.write("正在上传照片并生成文字结果...") | |
| # 生成文字的提示词 | |
| prompt = "请从左到右描述图片中的物体。" | |
| # 调用 OpenAI API 生成文字描述 | |
| response = openai.ChatCompletion.create( | |
| model="gpt-4", | |
| messages=[ | |
| {"role": "system", "content": "你是一位图像描述专家。"}, | |
| {"role": "user", "content": f"{prompt} 图像数据将作为背景知识提供。"}, | |
| {"role": "user", "content": "图像数据:图像数据以字节流表示,这里无法显示具体内容。"} | |
| ] | |
| ) | |
| generated_text = response.choices[0].message['content'].strip() | |
| st.write("生成的文字结果:") | |
| st.write(generated_text) | |
| # 功能四:将文字转换为语音并播放 | |
| st.write("将文字转换为语音并播放") | |
| tts = gTTS(text=generated_text, lang='zh') | |
| temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") | |
| tts.save(temp_file.name) | |
| audio_file = open(temp_file.name, "rb") | |
| audio_bytes = audio_file.read() | |
| st.audio(audio_bytes, format='audio/mp3') | |
| # 删除临时文件 | |
| os.remove(temp_file.name) | |