יצירת בינה מלאכותית טלפונית מדריך
-
פוסט זה נמחק! -
@יוסף-המתכנת כתב ביצירת בינה מלאכותית טלפונית מדריך:
api_link=פה תכניס את הכתובת של השרת שלך
איך אני ידוע מה השרת שלי ?
-
פוסט זה נמחק! -
יצירת השרת ע"י nodejs
שלב א'
לפתוח את "פנקס הרשימות"
שלב ב' לכתוב בו את הקוד הבא ולשמור בשם "grok-transcribe-gpt-server.js"
הקודrequire('dotenv').config(); const express = require('express'); const multer = require('multer'); const fs = require('fs'); const axios = require('axios'); const { SpeechClient } = require('@google-cloud/speech'); const app = express(); const upload = multer({ dest: 'uploads/' }); const speechClient = new SpeechClient(); const PORT = process.env.PORT || 3000; const OPENAI_API_KEY =פה שים את ה API'; const DEFAULT_LANG = 'he-IL'; function guessEncoding(mimetype) { if (!mimetype) return undefined; mimetype = mimetype.toLowerCase(); if (mimetype.includes('wav')) return 'LINEAR16'; if (mimetype.includes('x-wav')) return 'LINEAR16'; if (mimetype.includes('mpeg') || mimetype.includes('mp3')) return 'MP3'; if (mimetype.includes('ogg')) return 'OGG_OPUS'; if (mimetype.includes('webm')) return 'WEBM_OPUS'; if (mimetype.includes('flac')) return 'FLAC'; return undefined; } app.get('/', (req, res) => { res.send('Server is running. POST /transcribe with form-data field `audio`.'); }); app.post('/transcribe', upload.single('audio'), async (req, res) => { if (!req.file) { return res.status(400).json({ error: 'No audio file uploaded.' }); } const filepath = req.file.path; const mimetype = req.file.mimetype; const lang = req.query.lang || DEFAULT_LANG; try { const fileBuffer = fs.readFileSync(filepath); const audioBytes = fileBuffer.toString('base64'); const encoding = guessEncoding(mimetype); const request = { audio: { content: audioBytes }, config: { ...(encoding ? { encoding } : {}), languageCode: lang, enableAutomaticPunctuation: true, }, }; const [response] = await speechClient.recognize(request); let transcription = ''; if (response && response.results) { transcription = response.results .map(r => (r.alternatives && r.alternatives[0]) ? r.alternatives[0].transcript : '') .join('\n') .trim(); } if (!transcription) transcription = ''; const openaiPayload = { model: 'gpt-3.5-turbo', messages: [ { role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: `Transcription (language ${lang}):\n${transcription}` } ], max_tokens: 800, temperature: 0.2, }; const openaiRes = await axios.post('https://api.openai.com/v1/chat/completions', openaiPayload, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${OPENAI_API_KEY}`, }, }); let assistantReply = ''; try { const choices = openaiRes.data.choices || []; if (choices.length > 0 && choices[0].message) { assistantReply = choices[0].message.content.trim(); } else { assistantReply = JSON.stringify(openaiRes.data); } } catch (err) { assistantReply = ''; } res.json({ transcription, gpt_reply: assistantReply }); } catch (err) { res.status(500).json({ error: 'Server error', details: err.message }); } finally { try { fs.unlinkSync(filepath); } catch (e) { } } }); app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
לאחר מכן ללכת במנהל הקבצים למיקום של הקובץ ואז בשורת המיקום של הקובץ למחוק את מה שכתוב ולכתוב "CMD" ווללחוץ אנטר
(כפי שרואים בתמונה איפה לכתוב CMD ואת הקובץ באותו מיקום)ואז יפתח הטרמינל באותו מיקום
ואז לכתוב בטרמינל
pip install flask openai SpeechRecognition pydub
וללחוץ אנטר ואז לאחר שזה יגמור לרוץ לכתוב:
npm install express multer dotenv axios @google-cloud/speech
וללחוץ אנטר ואז לאחר שזה יגמור לרוץ לכתוב:
node ngrok-transcribe-gpt-server.js
ואז לפתוח טרמינל חדש ריק לא לסגור את הישן (לכתוב CMD במיקום של הקובץ כמו מקודם)
ולכתוב
ngrok http 3000
ואז להעתיק את כתובת השרת (כתבנו איפה זה בתחילת המדריך בשלב ה' או ד') ולהמשיך משאר המדריך הראשון -
-
@יעקב-קליין אותו דבר בדיוק!
-
@יוסף-המתכנת עשיתי אנטר אבל לא מסתדר אחר כך
-
@יעקב-קליין באיזה שלב אתה
הוצאת - API
איפה אתה? -
אל תדלג על שום שלב במדריך עם תדלג זה לא יעבוד לך
-
-
א' יש לך API מOpenAI (הסברתי איך להוציא)?
ב'הכנסת את API במקום המתאים בקובץ?
ג' פתח את טרמינל כמו בהסבר?
ד' כתבת בטרמינל את מה שאמרתי לכתוב?
ה' את כל השלבים הקודמים עשית?
ו' התקנת "נגרוק"? -
@יעקב-קליין פתחתי צ'אט למי שלא הצליח לעשות כמו ההסבר במדריך בקישור הזה
https://f2.freeivr.co.il/topic/18721/יצירת-בינה-מלאכותית-טלפונית-כמו-במדריך-של-יוסף-המתכנת/3 -
@יוסף-המתכנת אבל מה עוזר לך עם ngrok?, זה הרי עובד רק כשהמחשב פתוח ואתה מפעיל את השרת!
-
@CUBASE נכון! אלא למי שרוצה ליצור שרתים חיצוניים (הוא רצה מערכת שתחפש בשבילו מידע על רכבים) ואת האמת אף פעם לא ניסיתי ליצור שרת חיצוני כך שאני לא יכול לכתוב מדריך על משהו שלא עשיתי
-
@יוסף-המתכנת אבל אין קטע במערכת טלפונית שעובדת רק כשהמחשב פתוח - אפשר כבר לבדוק במחשב..
-
@CUBASE לי אישית זה עזר כי המחשב שלי פתוח כמעט כל הזמן