- Статус
- Оффлайн
- Регистрация
- 31 Май 2019
- Сообщения
- 245
- Реакции
- 84
Доброго времени суток
Один мой знакомый задался вопросом создания бота, который может преобразовать любое отправленное аудиосообщение в текст. Это бывает очень удобным, когда ты идешь по улице или же просто не можешь прослышать сообщение, которое отправил тебе твой друг по переписке. Данному боту нужно будет лишь переслать интересующее вас аудио и в течение нескольких секунд, вам придет ответное сообщение, преобразованное в текст. Процесс выполняет сервис от Google, поэтому можно не беспокоится о глупых ошибках в переводе звука.
Для успешной работы бота необходимо установить несколько библиотек для Python:
- Soundfile (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- Telebot (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- Requests (Пожалуйста, авторизуйтесь для просмотра ссылки.)
- Speech Recognition (Пожалуйста, авторизуйтесь для просмотра ссылки.)
Пожалуйста, авторизуйтесь для просмотра ссылки.
(это первый сайт, который я нашел в интернете, можете посмотреть и на других ресурсах)Сам исходный код данного бота выгладит так:
Python:
import speech_recognition as sr
from telebot import types
import soundfile as sf
import urllib.request
import subprocess
import requests
import telebot
import json
import os
token = 'токен'
bot = telebot.TeleBot(token)
s = requests.session()
def wav2text(dest_filename, msg, file_name):
r = sr.Recognizer()
message = sr.AudioFile(dest_filename)
with message as source:
audio = r.record(source)
try:
result = r.recognize_google(audio, language="ru_RU") # здесь можно изменять язык распознавания
bot.send_message(msg, "Распознанное сообщение: " + format(result))
os.remove(dest_filename)
os.remove(file_name)
except sr.UnknownValueError as ex:
bot.send_message(msg, 'Не удалось распознать сообщение!\n' + str(ex))
os.remove(dest_filename)
os.remove(file_name)
def audio2wav(file_id, msg):
r = s.get('https://api.telegram.org/bot' + token + '/getFile?file_id=' + file_id)
r = json.loads(r.text)
file_path = r['result']['file_path']
file_id = r['result']['file_id']
url = 'https://api.telegram.org/file/bot' + token + '/' + file_path
urllib.request.urlretrieve(url, file_id + '.oga')
file_name = file_id + '.oga'
src_filename = file_name
dest_filename = file_name + '.wav'
process = subprocess.run(['ffmpeg', '-i', src_filename, dest_filename])
wav2text(dest_filename, msg, file_name)
@bot.message_handler(content_types=['voice'])
def translate(message):
audio2wav(message.voice.file_id, message.chat.id)
bot.polling(none_stop=True, interval=0)
Пожалуйста, авторизуйтесь для просмотра ссылки.
.Если возникнут какие-либо проблемы с использованием бота - отпишите в тему. Постараюсь помочь
