En Esperanto telefoni kun ChatGPT
--
Por tion simple nur fari, oni telefonu al la Usona numero menciita en tiu Github-gisto.
Aktualigo:
Por efektivigi la aferon por telefonnumero, kiun oni mem estas luinta de Twilio, oni procedu jene:
Bezonataj estas:
- Twilio-telefonnumero,
- OpenAI-konto inkluzive OpenAI-API-shlosilon (por la aplikprogramaj interfacoj [API] de ChatGPT kaj Whisper),
- PythonAnywhere-konto,
- Make-konto,
- bplaced-konto (au konto che alia provizanto de retspaco) kaj
- Guglo-konto.
En la Twilio-konzolo oni devas asigni al la koncerna telefonnumero — porA CALL COMES IN
(voko eniras) — tiel nomatan Webhook
(rethokon; ekzempla URL: http://andreo7.bplaced.net/abcd1
) kun jena enhavo:
<?php
echo '<?xml version="1.0" encoding="UTF-8"?><Response><Say voice="Polly.Ewa">Post la sijgnalsono bonwole parolu malrapijde kay komencu per: Saluton!</Say><Record action="http://andreo7.bplaced.net/abcd2.php" maxLength="60"/></Response>';
?>
Tamen http://andreo7.bplaced.net/abcd2
devas esti anstatauigita per tiu URL, kie oni estas deponinta sian duan php-retpaghon (ekzempla URL chi tie: http://andreo7.bplaced.net/abcd2
) kun jena enhavo:
<?php
sleep(4);
mail("retposhto1@hook.eu1.make.com", "Startigu", "Startigu agon, "From: Nomo <retp@esperantujo.eo>");
sleep(4);
echo '<?xml version="1.0" encoding="UTF-8"?><Response><Say voice="Polly.Ewa">Momenton, mij petas.</Say><Pause length="8"/><Say voice="Polly.Ewa">Momenton, mij petas.</Say><Pause length="8"/><Say voice="Polly.Ewa">Momenton, mij petas.</Say><Pause length="8"/><Say voice="Polly.Ewa">Momenton, mij petas.</Say><Pause length="8"/><Play>https://docs.google.com/uc?export=play&id=1-Am-Ly46CXWviK-K1szBjf5ZRFSIsGFk</Play><Redirect>http://andreo7.bplaced.net/abcd1.php</Redirect></Response>';
?>
Chi-supre oni devas anstatauigi a) 1-Am-Ly46CXWviK-K1szBjf5ZRFSIsGFk
per la ID se sia kopio de tiu sondosiero kaj b) retposhto1@hook.eu1.make.com
per difinita retposht-adreso. Ghi estas tiu, kie eniranta retmesagho kauzas — per Make-modulo Webhook -> Custom mailhook
— http-peton per Make-modulo http -> Make a request
al difinita ret-apo, por ke tiu chi startu. La aplikenda retposht-adreso estighas dum la kreado de la Make-scenaro. Kaj la ret-apo-adreson oni ricevas per procedado lau jenaj pashoj, kaj tiun ret-apo-adreson oni devas enigi en la diritan Make-modulon http -> Make a request
:
- Pasho 1: Malfermu tiun Guglo-Tabelon.
- Pasho 2: Ensalutu en vian Guglo-konton per butono
Anmelden
(Ensaluti). - Pasho 3: En la tabelo iru al
Datei
(Dosiero) >Kopie erstellen
(Krei kopion). - Pasho 4: En via kopio de la tabelo alklaku
Erweiterungen
(Pliaj aferoj) >Apps Script
(Apoj-Skripto). - Pasho 5: Faru la necesajn shanghojn en la Apoj-Skripto.
- Pasho 6: Startigu
function doGet(e)
kaj donu chiujn petatajn permesojn. - Pasho 7: Alklaku
Bereitstellen
(Disponigi) >Neue Bereitstellung
(Nova disponigo) >Web App
(Ret-apo). Certigu, ke laZugriffsberechtigte
(Rajtigito por aliro) estasJeder
(Chiu). - Pasho 8: Kopiu la ret-adreson de la ret-apo disponigita de vi.
- Pasho 9: En la Make-modulon
http -> Make a request
enigu la ret-adreson de la ret-apo.
Krome oni devas krei duan Make-scenaron — ankau per kombino de la Make-moduloj Webhook -> Custom mailhook
kaj http -> Make a request
. Per la retposht-adreso ricevita dum la kreado de tiu dua Make-scenaro oni devas anstatauigi la retposht-adreson en la Apoj-Skripto de sia kopio de tiu Guglo-Tabelo. Kaj la ret-apo-adreson enigendan en la Make-modulon http -> Make a request
de tiu dua Make-scenaro oni ricevas per procedado lau la supraj pashoj 1 ghis 8, tamen rilate al sia kopio de tiu dua Guglo-Tabelo.
Por ke oni povu utiligi eSpeak, oni devas krei ankau ret-apon de PythonAnywhere. Ensalutinte tie, tiucele oni enigu enhttps://www.pythonanywhere.com/user/uzantonomo/files/var/www/uzantomo_pythonanywhere_com_wsgi.py
jenan kodon (oni anstatauigu uzantonomo
per sia uzantonomo kaj chi-supre kaj en la sekvaj aferoj):
import sys
path = '/home/uzantonomo/'
if path not in sys.path:
sys.path.append(path)
from wsgi import application # noqa
Kaj en sia hejma dosierujo https://www.pythonanywhere.com/user/uzantonomo/files/home/uzantonomo
oni kreu dosieron wsgi.py
kun jena kodo:
import subprocess
import requests
import re
import base64
import os
import time
def application(environ, start_response):
if os.path.exists("sono.wav"):
os.remove("sono.wav")
parametro = environ.get('PATH_INFO')
parametro1 = "komenco" + parametro + "fino"
parametro2 = re.search(r"komenco\/(.+?)fino", parametro1)
parametro3 = parametro2.group(1)
teksto03 = base64.b64decode(parametro3).decode('utf-8')
teksto02 = teksto03
lingvo01 = re.search(r"(.+?) .", teksto02)
lingvo02 = lingvo01.group(1)
lingvo = "-" + "v" + lingvo02 + "+f3"
longo = len(teksto02)
longolgv = len(lingvo02)
teksto1 = teksto02[longolgv+1:longo]
# subprocess.Popen(["espeak", lingvo, "-s", "125", "-g", "12", "-w", "sono.wav", teksto1])
subprocess.Popen(["espeak", lingvo, "-s", "125", "-g", "12", "-p", "40", "-w", "sono.wav", teksto1])
time.sleep(1)
# out = subprocess.getoutput("curl https://bashupload.com/{} --data-binary @{}".format("sono.wav","sono.wav"))
# out = subprocess.getoutput("curl --upload-file sono.wav https://transfer.sh/sono.wav")
out = subprocess.getoutput("curl https://oshi.at -F f=@sono.wav")
time.sleep(1)
# url1 = re.search(r"https\:\/\/bashupload\.com\/(.+?)\/", out)
# url1 = re.search(r"https\:\/\/transfer\.sh\/(.+?)\/", out)
url1 = re.search(r"https\:\/\/oshi\.at\/(.+?)\/sono.wav", out)
url2 = url1.group(1)
# url = "https://bashupload.com/" + url2 + "/sono.wav"
# url = "https://transfer.sh/" + url2 + "/sono.wav"
url = "https://oshi.at/" + url2 + "/sono.wav"
pload = {'url':url}
requests.post("https://script.google.com/macros/s/{ret-apo-ID-rilate-al-evi}/exec", pload)
enhavo = parametro
status = '200 OK'
response_headers = [('Content-Type', 'text/html'), ('Content-Length', str(len(url)))]
start_response(status, response_headers)
yield enhavo.encode('utf8')
La {ret-apo-ID-rilate-al-evi}
oni ricevas per procedado lau la supraj pashoj 1 ghis 8, tamen rilate al sia kopio de tiu tria Guglo-Tabelo.
Informcele jen atentigo pri artikolo “Vocho-al-teksto-transformo kaj inverse: rimedoj uzeblaj por Esperanto”.