Загрузка аудиофайла в модуль распознавания речи для Python непосредственно с SFTP-сервера (с использованием Paramiko SFTPClient) - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу предвосхитить это тем фактом, что я все еще новичок в Парамико, так что все это может быть совершенно невозможно.

Я хочу открыть файл .wav на сервере с моего компьютера, чтобы выполнить некоторое распознавание речи на нем.Для этого я создаю транспорт с Paramiko и использую его для открытия аудиофайла на сервере.Затем я устанавливаю этот файл в качестве источника и использую SpeechRecognition для печати всего, что говорится в аудиофайле.Однако когда я открываю файл, расположенный в remotefilepath, он больше не распознается как аудиофайл, так как я получаю сообщение об ошибке AssertionError: Source must be an audio source.Печать type(file) Я получаю <class 'paramiko.sftp_file.SFTPFile'>.

Я хочу просто открыть файл на сервере и выполнить распознавание речи на нем без необходимости сначала сохранять файл на моем собственном компьютере.Есть ли способ для меня сделать это?Любая помощь / совет очень ценится

import paramiko
import speech_recognition as sr

remotefilepath = /path/to/file.wav
server_ip = 12.34.567.8
server_port = 22
transport = paramiko.Transport((server_ip, server_port))
transport.connect(username="foo", password="bar")
print "Connected to transport"
sftp = transport.open_sftp_client()
file = sftp.open(remotefilepath)

#print type(file)

r = sr.Recognizer()

with file as source:
    r.adjust_for_ambient_noise(source)
    audio = r.record(source)
    try:
        text = r.recognize_google(audio)
        print "You said: {}".format(text)
    except:
        print "Sorry, I could not understand."

file.close()
sftp.close()
transport.close()
print "Closed transport. Ending program" 

Python 2.7 на Windows 10.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

adjust_for_ambient_noise принимает реализацию AudioSource в качестве аргумента.Вместо этого вы передаете файлоподобный объект.

Я полагаю, вы можете вместо этого использовать AudioFile реализацию AudioSource.AudioFile можно создать с помощью файлового объекта:

with sftp.open(remotefilepath) as file:
    with AudioFile(file) as source:
        r.adjust_for_ambient_noise(source)
0 голосов
/ 14 декабря 2018

Попробуйте скопировать файл из исходного в локальный и начать его обработку.

sftp.get(filepath, localpath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...