• На форуме разрешено создавать темы только для пользователей, кто имеет группу «Продавец». Приобрести её можно здесь: https://dstock.biz/account/upgrades. Либо в телеграме https://t.me/DustDS

Статья Как перевести аудиосообщения в текст Telegram (Python)

Irval

Главный Модератор
Главный Модератор

Irval

Главный Модератор
Главный Модератор
Статус
Оффлайн
Регистрация
31 Май 2019
Сообщения
245
Реакции
84
Доброго времени суток

Один мой знакомый задался вопросом создания бота, который может преобразовать любое отправленное аудиосообщение в текст. Это бывает очень удобным, когда ты идешь по улице или же просто не можешь прослышать сообщение, которое отправил тебе твой друг по переписке. Данному боту нужно будет лишь переслать интересующее вас аудио и в течение нескольких секунд, вам придет ответное сообщение, преобразованное в текст. Процесс выполняет сервис от Google, поэтому можно не беспокоится о глупых ошибках в переводе звука.

Для успешной работы бота необходимо установить несколько библиотек для Python:
Также требуется установить FFmpeg в PATH системы. Как это сделать можно посмотреть
Пожалуйста, авторизуйтесь для просмотра ссылки.
(это первый сайт, который я нашел в интернете, можете посмотреть и на других ресурсах)

Сам исходный код данного бота выгладит так:
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)
Не забудьте изменить токен Telegram API на свой, а также включить VPN или использовать прокси, если вы проживаете в России. Grabber прокси можно скачать
Пожалуйста, авторизуйтесь для просмотра ссылки.
.
Если возникнут какие-либо проблемы с использованием бота - отпишите в тему. Постараюсь помочь :hi:
 
Сверху