@Jimm24

Автоматизация запроса по API в звуковую нейросеть из Excel через python?

Всем привет! в общем только начал разбираться с нейросетями и понял, что желательно как-то автоматизировать процессы перевода. Начал смотреть готовый код по Python который позволяет упрости процесс перевода, но все коды в интернете собственно сделаны на 1 запрос, задался вопросом как брать код из того же excel и подставлять значение колонок в нужные мне части кода. Поскольку пока только начал изучать python. Хотелось немного тоже по разбору увидеть по возможности.
Приведу пример обоих кодов один запрос черeз API на сервисe

spoiler
import json
import os
from dotenv import load_dotenv
import time
import requests


load_dotenv()
def text_to_speech(text='Привет друг!'):
    headers = {"Authorization": f"Bearer {os.getenv('API_KEY')}"}
    url = 'https://api.edenai.run/v2/audio/text_to_speech'

    payload = {
        'providers': 'lovoai',
        'language': 'ru-RU',
        # 'option': 'FEMALE',
        # 'lovoai': 'ru-RU_Anna Kravchuk',
        'option': 'MALE',
        'lovoai': 'ru-RU_Alexei Syomin',
        'text': f'{text}'
    }

    response = requests.post(url, json=payload, headers=headers)
    result = json.loads(response.text)

    # with open(f'{unx_time}.json', 'w') as file:
    #     json.dump(result, file, indent=4, ensure_ascii=False)

    audio_url = result.get('lovoai').get('audio_resource_url')
    r = requests.get(audio_url)

    with open(f'123.ogg', 'wb') as file:
        file.write(r.content)


def main():
    text_to_speech(text=  ' Меня зовут Дмитрий ')


if __name__ == '__main__':
    main()


Второй код просто печать на принт из xls. Таблица разбита на 2 колонки в первой колонке ID во второй Имя.
spoiler
import openpyxl

book = openpyxl.open("name.xlsx")

sheet = book.active

for row in range(2,sheet.max_row+1):
    id = sheet[row][0].value
    text = sheet[row][1].value
    print(id, text)


Собственно, если кто поможет то буду должен.
В общем не знаю как реализовать возможно думал сделать все в одном коде, но можно и по принципу импорта данных во второй файл. Не знаю как передавать переменные id и текст, какими правилами опираться при передаче переменных. Как зациклить функцию main и нужно ли это делать, или есть какое-то более оригинальное решение. Собственно задача пройти цикл находящийся в столбце до конца сохранить все файлы и завершить код.
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
import os
# import time

import requests
from openpyxl import load_workbook
from dotenv import load_dotenv

API_URL = 'https://api.edenai.run/v2/audio/text_to_speech'
HEADERS = {"Authorization": f"Bearer {os.getenv('API_KEY')}"}
DEFAULT_LANGUAGE = 'ru-RU'
DEFAULT_OPTION = 'MALE'
DEFAULT_VOICE = 'ru-RU_Alexei Syomin'


def convert_text_to_speech(row_number: int, _id: int, text: str):
    payload = {
        'providers': 'lovoai',
        'language': DEFAULT_LANGUAGE,
        'option': DEFAULT_OPTION,
        'lovoai': DEFAULT_VOICE,
        'text': text
    }

    response = requests.post(API_URL, json=payload, headers=HEADERS)
    result = response.json()

    audio_url = result.get('lovoai', {}).get('audio_resource_url')
    if audio_url:
        audio_content = requests.get(audio_url).content
        with open(f'row_{row_number}_ID_{_id}.ogg', 'wb') as audio_file:
            audio_file.write(audio_content)


def main(file_name: str):
    book = load_workbook(file_name)
    sheet = book.active
    for row in range(2, sheet.max_row + 1):
        _id = sheet[row][0].value
        text = sheet[row][1].value
        convert_text_to_speech(row, _id, text)

        # Установите задержку, если имеется ограничение на кол-во запросов в секунду
        # time.sleep(3)


if __name__ == '__main__':
    load_dotenv()
    main('name.xlsx')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы