Spaces:
Running
on
Zero
Running
on
Zero
import pandas as pd | |
import requests | |
import argparse | |
import os | |
from openai import OpenAI | |
openai_key = 'sk-cEOsqGI9gAOrxgqQ6D1B9U3nvZrpzsy98m03RDfrNf9XOYwP' | |
# def get_struct(caption): | |
# headers = { | |
# 'Content-Type': 'application/json', | |
# 'Authorization': f'{openai_key}', | |
# } | |
# json_data = { | |
# 'model': 'gpt-3.5-turbo', | |
# 'messages': [ | |
# { | |
# 'role': 'user', | |
# 'content':f'I want to know what sound might be in the given scene and you need to give me the results in the following format:\ | |
# Question: A bird sings on the river in the morning, a cow passes by and scares away the bird.\ | |
# Answer: <running water& all>@<birds chriping& start>@<cow footsteps& mid>@<birds flying away& end>.\ | |
# Question: cellphone ringing a variety of tones followed by a loud explosion and fire crackling as a truck engine runs idle\ | |
# Answer: <variety cellphone ringing tones& start>@<loud explosion& end>@<fire crackling& end>@<truck engine idle& end>\ | |
# Question: Train passing followed by short honks three times \ | |
# Answer: <train passing& all>@<short honks three times& end>\ | |
# All indicates the sound exists in the whole scene \ | |
# Start, mid, end indicates the time period the sound appear.\ | |
# Question: {caption} \ | |
# Answer:', | |
# }, | |
# ], | |
# 'temperature': 0.0, | |
# } | |
# response = requests.post('https://api.openai.com/v1/chat/completions', headers=headers, json=json_data) | |
# return eval(response.content)['choices'][0]["message"]["content"] | |
def get_struct(caption): | |
client = OpenAI( | |
base_url='https://api.openai-proxy.org/v1', | |
api_key='sk-cEOsqGI9gAOrxgqQ6D1B9U3nvZrpzsy98m03RDfrNf9XOYwP', | |
) | |
chat_completion = client.chat.completions.create( | |
messages=[ | |
{ | |
'role': 'user', | |
'content':f'I want to know what sound might be in the given scene and you need to give me the results in the following format:\ | |
Question: A bird sings on the river in the morning, a cow passes by and scares away the bird.\ | |
Answer: <running water& all>@<birds chriping& start>@<cow footsteps& mid>@<birds flying away& end>.\ | |
Question: cellphone ringing a variety of tones followed by a loud explosion and fire crackling as a truck engine runs idle\ | |
Answer: <variety cellphone ringing tones& start>@<loud explosion& end>@<fire crackling& end>@<truck engine idle& end>\ | |
Question: Train passing followed by short honks three times \ | |
Answer: <train passing& all>@<short honks three times& end>\ | |
All indicates the sound exists in the whole scene \ | |
Start, mid, end indicates the time period the sound appear.\ | |
Question: {caption} \ | |
Answer:', | |
}, | |
], | |
model="gpt-3.5-turbo", | |
) | |
print(chat_completion) | |
print(chat_completion.choices[0].message.content) | |
return chat_completion.choices[0].message.content | |
def parse_args(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument( "--tsv_path",type=str) | |
return parser.parse_args() | |
if __name__ == '__main__': | |
args = parse_args() | |
tsv_path = args.tsv_path | |
ori_df = pd.read_csv(tsv_path,sep='\t') | |
index = 0 | |
end = len(ori_df) | |
name = os.path.basename(tsv_path)[:-4] | |
f = open(f'{name}.txt','w') | |
newcap_list = [] | |
while index < end - 1: | |
try: | |
df = ori_df.iloc[index:end] | |
for t in df.itertuples(): | |
index = int(t[0]) | |
ori_caption = getattr(t,'caption') | |
strcut_cap = get_struct(ori_caption) | |
if 'sorry' in strcut_cap.lower(): | |
strcut_cap = f'<{ori_caption.lower()}, all>' | |
newcap_list.append(strcut_cap) | |
f.write(f'{index}\t{strcut_cap}\n') | |
f.flush() | |
except: | |
print("error") | |
f.flush() | |
f.close() | |
with open(f'{name}.txt') as f: | |
lines = f.readlines() | |
id2cap = {} | |
for line in lines: | |
# print(line) | |
index,caption = line.strip().split('\t') | |
id2cap[int(index)] = caption | |
df = pd.read_csv(f'{name}.tsv',sep='\t') | |
df['struct_cap'] = df.index.map(id2cap) | |
df.to_csv(f'{name}_struct.tsv',sep='\t',index=False) | |