Перекладач на Raspberry Pi з розпізнаванням мови та відтворенням (понад 60 мов)
User Rating: / 10
PoorBest 
There are no translations available.

Translation Raspberry PiЗ дуже невеликим зусиллям, ми можемо перетворити цей міні-комп'ютер на багатофункціональний мовний перекладач, який не тільки підтримує розпізнавання голосу і відтворення носія мови.
Він також здатний на динамічну трансляцію між 1000 мовних пар, безкоштовно! Навіть якщо Ви не зацікавлені в створенні саме такого інструменту перекладу, є ще багато частин цього керівництва, які можуть зацікавити Вас (розпізнавання мови, перетворення тексту в мову, API перекладу від Microsoft/Google). Пост починається зі списку покупок, хоча більшість читачів, ймовірно, вже має багато з цих предметів.
Список покупок
Translation Raspberry Pi-A
*Є безумовно дешевші варіанти USB-гарнітури, але автор вибрав Logitech, бо вона зручна у використанні. Для альтернативи, перегляньте список для перевірки, які звукові карти підтримуються Raspberry Pi.
Припущення
Це керівництво припускає, що Ваш Raspberry Pi має:
  • встановлену останню версію Raspian
  • підключення до Інтернету
  • відповідні драйвери звукової карти для гарнітури
Налагодження та тестування гарнітури
Перш ніж ми почнемо писати код, переконайтеся , що можемо записувати і відтворювати звук за допомогою нашої гарнітури USB. Найпростіший спосіб зробити це за допомогою вбудованих в Linux команд "arecord" і "aplay". Але спочатку давайте переконаємося, що наша файлова система знаходиться в актуальному стані:
sudo apt-get update
sudo apt-get upgrade
Тепер, підключіть гарнітуру USB і виконайте наступні команди:
cat /proc/asound/cards
cat /proc/asound/modules
Ви повинні побачити, що Logitech Headset вказаний як карта 1. Крім того, друга команда повинна показати, що драйвер для карти 0 (вихід за замовчуванням raspberry pi) є snd_bcm2835 і драйвер для карти 1 (наш Logitech Headset ) є snd_usb_audio:
Translation Raspberry Pi-1
Це проблема, тому що це показує, що за замовчуванням Raspberry Pi передає звук через свої вбудовані апаратні засоби, і не має налаштованого пристрою введення звуку. Щоб вирішити цю проблему, нам необхідно оновити ALSA (Advanced Linux Sound Architecture), щоб використовувати нашу гарнітуру за замовчуванням для введення і виведення звуку. Це може бути зроблено шляхом швидкої зміни в конфігураційному файлі ALSA, який знаходиться в /etc/modprobe.d/alsa-base.conf:
sudo nano /etc/modprobe.d/alsa-base.conf
Ближче до кінця цього файлу, змініть рядок, який виглядає як
options snd-usb-audio index=-2
на
options snd-usb-audio index=0
Збережіть і закрийте файл та перезавантажте Raspberry Pi за допомогою наступної команди:
sudo reboot
Після того, як система повернеться в Інтернет, звукова система повинна перезавантажитися, і коли ми повторно виконаємо наведені вище команди...
cat /proc/asound/cards
cat /proc/asound/modules
...то повинні побачити, що тепер пристрій вводу/виводу за замовчуванням гарнітура USB (карта 0), як показано нижче:
Translation Raspberry Pi-2
Тепер ми можемо перевірити це за допомогою запису 5 секундного кліпу з мікрофону:
arecord -d 5 -r 48000 daveconroy.wav
і відтворити його через динаміки гарнітури:
aplay daveconroy.wav
Для налаштування рівнів можна використовувати вбудовану утиліту alsamixer. Цей інструмент обробляє як аудіовхід, так і вихідні рівні:
sudo alsamixer
Тепер, коли наша гарнітура налаштована, ми можемо перейти до наступного кроку перетворення промови в текст.
Мова в текст або розпізнавання мови з Raspberry Pi
Є кілька варіантів для розпізнавання мови з RPI, але автор думав, що кращим рішенням для цього уроку те, щоб використовувати сервіс Google’s Speech to Text. Ця послуга дозволяє завантажити файл, який ми щойно записали, і перетворити його в текст (який ми пізніше будемо використовувати для перекладу).
Давайте створимо для нас скрипт для обробки цього процесу:
sudo nano stt.sh
з наступним вмістом:
echo "Recording your Speech (Ctrl+C to Transcribe)"
arecord -D plughw:0,0 -q -f cd -t wav -d 0 -r 16000 | flac - -f --best --sample-rate 16000 -s -o daveconroy.flac;
 
echo "Converting Speech to Text..."
wget -q -U "Mozilla/5.0" --post-file daveconroy.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium" | cut -d\" -f12  > stt.txt
 
echo "You Said:"
value=`cat stt.txt`
echo "$value"
Зробіть його виконуваним:
sudo chmod +x stt.sh
Останній крок перед тим, як запустити сценарій, це встановити FLAC кодек, який не включений в стандартний образ Raspian:
sudo apt-get install flac
Тепер ми можемо запустити скрипт:
./stt.sh
Він автоматично розпочинає запис голосу, просто натисніть Ctrl+C, коли почнете говорити. У цей момент сценарій завантажує звуковий файл в Google, вони транскрибують його і повертають, щоб він міг бути відображений на нашому екрані. Вражаючий результат лише кількох рядків коду! Приклад виведення нижче:
Translation Raspberry Pi-3
Переклад від Microsoft і перетворення тексту в мову від Google
Тепер, коли ми можемо записувати свій голос і перетворювати його в текст, ми повинні перевести його на бажану нам іноземну мову. Автор хотів би мати можливість використовувати інструмент Google’s Translate для цього, але, на жаль, він вимагає 20$ оплати за реєстрацію, щоб використовувати цей API. Можливо, Ви купите його для себе, але автор хотів би, щоб цей проект був безкоштовним і кожен мав можливість спробувати його.
Як альтернативу, ми будемо використовувати сервіс Microsoft’s translate, який в даний час, як і раніше, безкоштовний для публічного використання. Список підтримуваних мов і їх відповідних кодів можна знайти тут. У нашому попередньому прикладі ми використовували простий скрипт, але для процесу перекладу і відтворення – автор статті написав більш потужний сценарій на python.
Весь цей код можна знайти в його сховищі github.
Давайте спочатку створимо файл:
sudo nano PiTranslate.py
і додамо наступний вміст:
import json
import requests
import urllib
import subprocess
import argparse
 
parser = argparse.ArgumentParser(description='This is a demo script by DaveConroy.com.')
parser.add_argument('-o','--origin_language', help='Origin Language',required=True)
parser.add_argument('-d','--destination_language', help='Destination Language', required=True)
parser.add_argument('-t','--text_to_translate', help='Text to Translate', required=True)
args = parser.parse_args()
 
## show values ##
print ("Origin: %s" % args.origin_language )
print ("Destination: %s" % args.destination_language )
print ("Text: %s" % args.text_to_translate )
 
text = args.text_to_translate
origin_language=args.origin_language
destination_language=args.destination_language
 
 
def speakOriginText(phrase):
    googleSpeechURL = "http://translate.google.com/translate_tts?tl="+ origin_language +"&q=" + phrase
    subprocess.call(["mplayer",googleSpeechURL], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
def speakDestinationText(phrase):
    googleSpeechURL = "http://translate.google.com/translate_tts?tl=" + destination_language +"&q=" + phrase
    print googleSpeechURL
    subprocess.call(["mplayer",googleSpeechURL], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
args = {
        'client_id': '',#your client id here
        'client_secret': '',#your azure secret here
        'scope': 'http://api.microsofttranslator.com',
        'grant_type': 'client_credentials'
    }
 
oauth_url = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'
oauth_junk = json.loads(requests.post(oauth_url,data=urllib.urlencode(args)).content)
translation_args = {
        'text': text,
        'to': destination_language,
        'from': origin_language
        }
 
headers={'Authorization': 'Bearer '+oauth_junk['access_token']}
translation_url = 'http://api.microsofttranslator.com/V2/Ajax.svc/Translate?'
translation_result = requests.get(translation_url+urllib.urlencode(translation_args),headers=headers)
translation=translation_result.text[2:-1]
 
speakOriginText('Translating ' + translation_args["text"])
speakDestinationText(translation)
Для запуску скрипта нам потрібно імпортувати кілька бібліотек python і медіа-плеєр:
sudo apt-get install python-pip mplayer
sudo pip install requests
Останнє, що нам потрібно зробити, перш ніж ми зможемо запустити сценарій, це зареєструватися для ключа Microsoft Azure Marketplace API. Щоб зробити це, просто відвідайте marketplace, зареєструйте додаток, а потім введіть ідентифікатор клієнта і секретний код доступу в сценарій вище.
Тепер ми можемо запустити скрипт:
sudo python PiTranslate.py -o en -d es -t "hello my name is david conroy"
Сценарій має 3 необхідні входи:
  • -o мова оригіналу
  • -d вихідна мова
  • -t "текст для перекладу"
Translation Raspberry Pi-4
Наведена вище команда починає з англійської мови і перекладає на іспанську. Улюблена частина автора про цілий підручник, як швидко Ви можете змінювати мови, якими перекладаєте, і як вихідний голос змінюється відповідно з вихідною мовою.
Збираємо все разом
Насправді дуже легко об'єднати два сценарії, які ми створили в цьому підручнику. Насправді, це займе всього один рядок коду, який буде доданий до нижньої частини скрипта stt.sh, який ми створили раніше (за умови, що PiTranslate.py і stt.sh знаходяться в одному каталозі):
sudo nano stt.sh
python PiTranslate.py -o en -d es -t "$value"
Для тих з Вас, хто перестрибнув у цьому уроці, ось знову весь сценарій з доданим рядком:
echo "Recording your Speech (Ctrl+C to Transcribe)"
arecord -D plughw:0,0 -f cd -t wav -d 0 -q -r 16000 | flac - -s -f --best --sample-rate 16000 -o daveconroy.flac;
 
echo "Converting Speech to Text..."
wget -q -U "Mozilla/5.0" --post-file daveconroy.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium" | cut -d\" -f12  > stt.txt
 
echo "You Said:"
value=`cat stt.txt`
echo "$value"
 
#translate from English to Spanish and play over speakers
python PiTranslate.py -o en -d es -t "$value"
Тепер запустіть сценарій перетворення мови в текст знову, і він перекладе з англійської на іспанську за замовчуванням:
./stt.sh
Змініть оригінальну і вихідну мови в останньому рядку, відповідно до побажань, і сценарій PiTranslate.py зробить все інше! Існують буквально 1000 мовних пар, які тут підтримуються. Ось скріншот:
Translation Raspberry Pi-5
Демо-відео
Автор просить вибачення, що відео трохи нестійке, бо було важко тримати гарнітуру біля телефону під час запуску сценаріїв:
(Джерело EN: daveconroy.com)
 
>
BookNewsPractice SearchPartnersAbout
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting