Потрібна допомога в інтеграції з text to speech - speech to text
Привет, вот ТЗ, там где на месте исполнителя стоят ??? значит это возможно вы.
Жду предложений
1. Настройка Asterisk FreePBX
Исполнитель: Владимир
Задачи:
- Настроить транки для маршрутизации входящих звонков:
Убедись, что все транки настроены правильно для обработки входящих вызовов через SIP-провайдера.
```bash
nano /etc/asterisk/sip.conf
```
Пример конфигурации транка:
```ini
[my-trunk]
type=peer
host=sip.provider.com
username=my_user
secret=my_secret
fromuser=my_user
context=from-trunk
insecure=invite,port
disallow=all
allow=ulaw
```
- Настроить IVR-меню:
IVR будет перенаправлять звонки на внешний сервис или API для последующей обработки. Настрой IVR-меню через FreePBX GUI, указав правильные внешние маршруты для передачи звонков.
Пример конфигурации:
```ini
[ivr-menu]
exten => s,1,Answer()
exten => s,n,Background(custom/welcome_message)
exten => s,n,WaitExten()
exten => 1,1,Dial(SIP/customer_service,20)
exten => 2,1,Goto(api-processing,s,1)
```
- Проверить правильность передачи звонков через IVR.
---
2. Интеграция Google TTS (Text-to-Speech)
Исполнитель: ???
Задачи:
- Настроить API для связи с Google TTS. Используй официальную библиотеку Google Cloud для TTS на Python:
```bash
pip install google-cloud-texttospeech
```
Пример Python-кода для передачи текста и получения аудио:
```python
from google.cloud import texttospeech
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text="Your response text")
voice = texttospeech.VoiceSelectionParams(
language_code="en-US",
ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL)
audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config)
# Save the audio output
with open("output.mp3", "wb") as out:
out.write(response.audio_content)
```
- Обеспечить передачу аудиофайла обратно в Asterisk.
Используй команду AGI для воспроизведения аудиофайлов в Asterisk:
```bash
exten => s,n,AGI(google_tts.py,"Your text here")
```
---
3. Интеграция Binom AI
Исполнитель: ???
Задачи:
- Интегрировать с API для передачи аудио запроса клиента в Binom AI.
Вот пример API:
POST https://prod-api.binomai.com/api/public/chats
Request schema: ChatRequest
Response schema: Chat
Instructions:
Inactive chat lifetime should be no longer than 3 days to protect context from growing and increase resource costs. Please implement chat rotation logic on your side to always create a new chat when an old chat has no activity for the last 3 days.
Example:
curl https://prod-api.binomai.com/api/public/chats \
-u RLCacg7CTz2FlTlzdeoD9w==: \
-d chat_id="chat_id_on_your_side"
POST https://prod-api.binomai.com/api/public/chats/{chat_id}/messages
Request schema: MessageRequest
Response schema: Message
Example:
curl https://prod-api.binomai.com/api/public/chats/{chat_id}/messages \
-u RLCacg7CTz2FlTlzdeoD9w==: \
-d chat_id="chat_id_on_your_side" \
-d "file_urls[]=https://example.com/path/to/file1.mp3"
GET https://prod-api.binomai.com/api/public/chats/{chat_id}/messages
Response schema: MessageList
Instructions:
MessageList response will return a run_in_progress parameter. When it's true, we are preparing a response from AI. Please pull the list not often than every 5000 milliseconds (5 seconds) and stop pulling when run_in_progress returns a false value.
Example:
curl https://prod-api.binomai.com/api/public/chats/{chat_id}/messages \
-u RLCacg7CTz2FlTlzdeoD9w==:
ChatRequest: {
type: :object,
required: [],
properties: {
integration_chat_id: { type: :string }
}
}
Chat: {
type: :object,
required: [:id, :form, :created_at],
properties: {
id: { type: :string, format: :uuid },
form: { type: :string, enum: [:public_chat, :widget, :helpcrunch, :api] },
integration_chat_id: { type: :string },
created_at: { type: :string, format: 'date-time' }
}
}
MessageRequest: {
type: :object,
required: [:content],
properties: {
content: { type: :string },
file_urls: { type: :array, items: {
type: :string
} }
}
}
Message: {
type: :object,
required: [:id, :content, :role, :created_at],
properties: {
id: { type: :string, format: :uuid },
content: { type: :string },
role: { type: :string, enum: [:user, :assistant, :system, :operator] },
files: { type: :array, items: {
type: :object,
required: [:id, :signed_id, :content_type, :url],
properties: {
id: { type: :string },
name: { type: :string },
signed_id: { type: :string },
content_type: { type: :string },
url: { type: :string },
thumb: { type: :string },
transcription: { type: :string }
}
} },
message_feedback: {
type: :object,
required: [:id, :state, :comment, :created_at],
properties: {
id: { type: :string },
state: { type: :string, enum: [:like, :dislike] },
comment: { type: :string },
created_at: { type: :string, format: 'date-time' }
}
},
created_at: { type: :string, format: 'date-time' }
}
}
4. Интеграция Google STT (Speech-to-Text)
Исполнитель: ???
Задачи:
- Настроить API для передачи аудиозапросов в Google STT. Используй официальную библиотеку Google Cloud для STT:
```bash
pip install google-cloud-speech
```
Пример Python-кода для преобразования аудио в текст:
```python
from google.cloud import speech
client = speech.SpeechClient()
def transcribe_audio(audio_file):
with open(audio_file, "rb") as audio:
audio_content = audio.read()
audio = speech.RecognitionAudio(content=audio_content)
config = speech.RecognitionConfig(
encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=16000,
language_code="en-US",
)
response = client.recognize(config=config, audio=audio)
return response.results[0].alternatives[0].transcript
```
- Передать полученный текст в Binom AI через API.
---
5. Возвращение данных в Asterisk и воспроизведение аудио клиенту
Исполнитель: Владимир
Задачи:
- Проверить корректную передачу аудиофайлов из Google TTS обратно в Asterisk. Аудио должно воспроизводиться через AGI-скрипт или встроенную команду `Playback`:
```bash
exten => s,n,Playback(/path/to/output.mp3)
```
- Убедиться, что клиент получает ответ в аудиоформате без задержек и с корректной качественной обработкой.
___
Дополнительные моменты:
- Логирование: Все этапы должны логироваться для отслеживания ошибок. Логи должны включать обработку запросов в Google TTS, STT, и Binom AI.
- Мониторинг: Добавь систему мониторинга для проверки состояния всех сервисов.
-
11 днів62 317 UAH
8778 60 0 1 11 днів62 317 UAHДоброго дня!
Готовий зробити інтеграції Google STT (Speech-to-Text), Binom AI, Google TTS (Text-to-Speech)
Є досвід реалізації подібних проектів. Можу надати кейс в ЛС.
Портфоліо:Freelancehunt
Буду радий обговорити проект!
Актуальні фриланс-проєкти в категорії Веб-програмування
Розробка WebGL/Three.js сцени з генерацією та експортом 3D (снапшот) з анімованого шейдераОпис об'єкта:Проект являє собою дизайнерський стіл, виконаний у формі реалістичного, глибокого водовороту (центральна воронка, яка плавно переходить з широкої горизонтальної стільниці в тонку витончену ніжку). Суть задачі:Потрібен WebGL / Creative Coding розробник для створення… Javascript та Typescript, Веб-програмування ∙ 5 годин 12 хвилин тому ∙ 15 ставок |
Зробити сайт на WP , без конструктора
16 000 UAH
Треба зробити каталог ( скоріше за все без корзини ) тільки форма заявки на товару без використання елементора та інших має бути головна сторінка , сторінка товару , каталог , каталого постачальників , та можливо ще декілька інші дизайн і стилістика типу такого… Веб-програмування ∙ 5 годин 19 хвилин тому ∙ 65 ставок |
Shopify-розробник для сайту доставки суші (Польща)Шукаємо досвідченого Shopify-розробника для реалізації сайту доставки їжі (суші) для клієнта з м. Катовіце, Польща. Що потрібно зробити: Налаштувати сайт на готовому шаблоні Shopify (шаблон узгоджується) Меню з фотографіями страв і описами Онлайн-оформлення замовлень Підключення… Веб-програмування ∙ 6 годин 44 хвилини тому ∙ 31 ставка |
Webflow розробник для заповнення сторінок портфоліо на сайтіЄ сайт розроблений кастомно на вебфлоу для будівельної компанії, потрібно швидко заповнити сторінки проектів за одним шаблоном (замінити картинки і тексти) Для 2 мов Кількість - 6 штук Готові починати asap, дякую! HTML та CSS верстання, Веб-програмування ∙ 22 години 39 хвилин тому ∙ 37 ставок |
Адміністратор-налаштувальник LearnWorldsЗадача Настроїти готову платформу LearnWorlds під елітний онлайн-курс. Не розробляти архітектуру — реалізувати вже готову структуру руками в адмін-панелі. ———————— Що потрібно зробити: Брендинг ⦁ Підключити свій домен ⦁ Завантажити логотип, налаштувати фірмові кольори ⦁… CMS, Веб-програмування ∙ 1 день 1 година тому ∙ 9 ставок |