По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Друзья, сегодня речь пойдет о синтезе речи в Asterisk. Этот простой способ позволит вам озвучивать требуемое голосовое сообщение в структурах IVR или обычных приветствиях. Да где угодно. Профит этого решения: Единый голос для всех аудио – файлов; Кэширование и сохранение озвученных текстов, фраз в виде медиа - файлов, для последующего использования на Asterisk; Получаем токен Приступим. Прежде всего нужно получить API - токен на использование сервиса от Яндекс. Этот процесс расписан в статье по ссылке ниже (раздел Получение API - токена Yandex.SpeechKit): Получение токена Возвращайтесь с токеном и будем приступать к коду :) Кодим! Для начала создадим директорию /var/lib/asterisk/tts/ и дадим права. Там мы будем хранить текстовый файл, благодаря которому, сможем идентифицировать аудио – файлы по совпадению MD5 названия. Внутри файла будет фраза: mkdir /var/lib/asterisk/tts/ chown asterisk:asterisk /var/lib/asterisk/tts/ chmod 775 /var/lib/asterisk/tts/ В зависимости от дистрибутива и вариантов установки IP – АТС Asterisk, звуковые файлы могут располагаться в другой директории. Вы можете самостоятельно поправить это в скрипте. Использовать будем AGI приложение. Традиционно, комментарии к коду прикладываются: #!/usr/bin/php -q <?php error_reporting(0); // выключаем ошибки, необязательно, нужно в процесcе дебага скрипта require('phpagi.php'); $agi = new AGI(); $str = $agi->request['agi_arg_1']; //записываем в переменную текст, который необходимо озвучить $str = iconv('cp1251', 'utf-8', $str); // конвертируем в кириллическую кодировку $md5 = md5($str); //вычисляем md5 - хэш от переменной $str $prefix = '/var/lib/asterisk/sounds/ru/custom/'; //устанавливаем директорию для файлов. Мы ее создавали по ходу движения $filename = $prefix.$md5; //устанавливаем название файла(оно будет равно md5 текста) $format = 'wav'; //устанавливаем формат получаемого файла от Яндекс $quality = 'hi'; //устанавливаем качество $speaker = 'oksana'; //выбираем голос. На момент написания статьи доступны женские голоса: jane, oksana, alyss и omazh и мужские голоса: zahar и ermil. $emotion = 'evil'; // выбираем интонацию голоса, good — радостный, доброжелательный, evil — раздраженный, neutral — нейтральный (используется по умолчанию). Будем злее :) $speed = '0.9'; // данный параметр отвечает за скорость (темп) речи, подбирается опытным путем на слух, в данном случае оптимальный $key = 'Ваш_токен'; //ваш токен, который вы получили ранее. if (!file_exists($filename.'.wav')) { $qs = http_build_query(array("format" => $format,"quality" => $quality,"lang" => "ru-RU","speaker" => $speaker,"speed" => $speed,"key" => $key,"emotion" => $emotion, "text" => $str)); //формируем строку запроса $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); //запрашиваем файл $file = fopen("file1.wav", "w"); //открываем файл для записи fwrite($file, $soundfile); // пишем в файл данные fclose($file); //закрываем файл shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 '.$filename.'.wav'); //конвертируем файл под требования Asterisk и закидываем в директорию для аудио shell_exec('chown asterisk:asterisk '.$filename.'.wav'); shell_exec('chmod 775 '.$filename.'.wav'); // даем файлу нужные пермишны; shell_exec('rm -f file1.wav'); // удаляем файл, который создали в процессе обращения к API; shell_exec('echo '.$str.' > /var/lib/asterisk/tts/'.$md5.'.txt'); // добавляем магии ;-) о ней ниже в тексте статьи. } $agi->exec('Playback',"custom/$md5"); //проигрываем файл звонящему. Скачать скрипт синтеза речи После загрузки файла, сохраните его с расширением .php Сохраняем скрипт как texttospeech.php и закидываем его в директорию /var/lib/asterisk/agi-bin. После, даем последовательность следующих команд: dos2unix /var/lib/asterisk/agi-bin/texttospeech.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/texttospeech.php chmod 775 /var/lib/asterisk/agi-bin/texttospeech.php Как вы могли заметить, скрипт настраивается. Голос, интонация, скорость речи, качество получаемого файла – подлежат корректировке для вашей задачи. Схема работы всего процесса следующая: Скрипт получает из диалплана текст по AGI и сохраняет в переменной; Если у нас уже существует аудио – файл для заранее записанной фразы, мы отдаем в диалплан команду на воспроизведение. Если нет – обращаемся к API; Скрипт отправляет запрос в сторону API Яндекса; Происходит конвертация полученного аудио – файла в нужный формат; Даем права файлу для воспроизведения на Asterisk и удаляем временный файл; Делаем отметку о создании файла в служебный текстовый файл; Воспроизводим файл; А как заставить скрипт работать? Очень просто. Открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [text_to_speech] exten => s,1,Answer() exten => s,2,AGI(texttospeech.php,"Привет! Это Мерион Нетворкс. Если ты слышишь это сообщение, значит все сделал правильно!") Сохраняем изменения и прыгаем в FreePBX. Будем вызывать кастомный контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Настроили и сохранили. Наша задумка такова – человек звонит на наш номер, набирает 13 и попадает на синтезированное сообщение. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Звоним, проверяем. Работает :) Если хотите заменить фразу, которую нужно озвучить, просто поправьте ее в файле /etc/asterisk/extensions_custom.conf.
img
Windows File Recovery - это официальный инструмент для восстановления удаленных файлов с жестких дисков, SD-карт, USB-накопителей и других носителей. Это подробное пошаговое руководство по использованию этой утилиты командной строки. Про Windows File Recovery Средство восстановления файлов Microsoft Windows не имеет графического интерфейса - это всего лишь утилита командной строки. Мы покажем вам, как его использовать, но это более сложный процесс, чем вы могли бы ожидать от официальной утилиты Microsoft, доступной в Магазине Windows 10. Для этого инструмента требуется установленное майское обновление 2020 года для Windows 10 или более новая версия Windows 10. Он не работает в старых версиях Windows. Может ли инструмент Microsoft действительно найти и восстановить удаленный файл, зависит от диска? Удаленные файлы не удаляются сразу с жестких дисков, но часто они сразу удаляются с твердотельных дисков. Если вы удалили много данных на устройстве, таком как SD-карта, то после удаления файла, вероятно, данные файла могли быть перезаписаны. Даже если вам удастся восстановить файл, вы можете получить только некоторые данные файла - файл может быть поврежден. Вы можете получить только те данные, которые еще находятся на диске. Здесь нет никаких гарантий, и поэтому резервные копии так важны. Утилита также имеет несколько режимов, предназначенных для разных ситуаций и файловых систем. Мы как их использовать. Как установить Windows File Recovery Для начала установите Windows File Recovery из Магазина Microsoft, чтобы начать. Вы можете открыть Магазин и выполнить поиск «Windows File Recovery» или просто щелкнуть эту ссылку, чтобы открыть Магазин. После установки откройте меню «Пуск» и выполните поиск и запустите ярлык Windows File Recovery один раз и нажмите «Да» для запроса UAC. Вы увидите окно командной строки с доступом администратора. Здесь вы будете запускать команды восстановления файлов. Вы можете использовать другие среды командной строки, такие как Windows Terminal и PowerShell, но не забудьте запустить их с правами администратора. (В меню «Пуск» щелкните правой кнопкой мыши тот файл, который хотите использовать, и выберите «Запуск от имени администратора».) Как восстановить удаленные файлы в Windows 10 Чтобы использовать этот инструмент, вы запустите команду winfr, указав диск, на котором вы хотите найти удаленный файл, место назначения, куда вы хотите сохранить его, и различные ключи, которые управляют тем, что инструмент ищет и как он ищет. Вы должны сохранить удаленный файл на другой диск. Вот формат команды: winfr source-drive: destination-drive: /switches После выполнения команды инструмент автоматически создаст каталог с именем Recovery_ [дата и время] на указанном целевом диске. Какой режим использовать? Прежде чем продолжить, вы должны определить режим, в котором вы хотите выполнить поиск удаленного файла. Существует три режима: Default, Segment и Signature. Default это самый быстрый режим, Segment похож на него, но медленнее и тщательнее. Режим Signature может искать файлы по типу - он поддерживает файлы ASF, JPEG, MP3, MPEG, PDF, PNG и ZIP. (При поиске файлов «ZIP» также будут найдены документы Office, хранящиеся в таких форматах, как DOCX, XLSX и PPTX.) Вам нужно знать, в какой файловой системе отсканирован диск, который вы будете сканировать. Чтобы найти это, откройте проводник, щелкните правой кнопкой мыши диск в разделе «Этот компьютер» и выберите «Свойства». Вы увидите файловую систему, отображаемую на вкладке «Общие». Вот когда вы должны использовать разные режимы: Вы пытаетесь найти файл, который вы недавно удалили, на диске, отформатированном в NTFS, которая является файловой системой Windows 10 по умолчанию? Используйте режим Default. Если вы сканируете диск NTFS в другой ситуации - например, если вы удалили файл некоторое время назад, отформатировали диск или имеете дело с поврежденным диском - сначала попробуйте режим Segment, а затем - режим Signature. Вы пытаетесь найти файл, сохраненный на диске FAT, exFAT или ReFS? Используйте режим Signature. Режимы Default и Segment работают только в файловых системах NTFS. Если у вас есть сомнения, просто начните с режима Default. Затем вы можете попробовать Segment, а затем Signature, если режим по умолчанию не работает. Как восстановить файл в режиме Default Чтобы использовать режим Default, нужно написать /n, а затем путь поиска: Для поиска файла с именем document.docx вы должны использовать /n document.docx. Вы также можете указать полный путь к файлу, например /n UsersAlexDocuments document.docx Чтобы найти все файлы, которые были в папке «Документы», если ваше имя пользователя - Alex, вы должны использовать /n UsersAlexDocuments. Для поиска с wildcard используйте звездочку *. Например, /n UsersAlexDocuments*.docx найдет все файлы DOCX, которые были в папке «Документы». Давайте соединим все это сейчас в примере. Чтобы найти все файлы DOCX на диске C: и скопировать их на диск D:, вы должны выполнить следующую команду: winfr C: D: /n *.docx Вам нужно будет набрать y, чтобы продолжить. Как мы упоминали выше, вы найдете восстановленные файлы в каталоге с именем Recovery_ [дата и время] на целевом диске, который вы указали в командной строке. Чтобы найти все файлы со определенным словом в названии, используйте wildcard. Итак, чтобы найти все документы со словом «project» в любом месте в их имени, вы должны выполнить: winfr C: D: /n *project* Вы можете указать несколько поисков за раз с помощью нескольких ключей /n. Итак, чтобы найти все файлы Word, Excel и PowerPoint, вы должны выполнить следующее: winfr C: D: /n *.docx /n *.xlsx /n *.pptx Чтобы найти определенный файл с именем important_document.pdf, находящийся в папке UsersAlexDocuments на диске C:, а затем сохранить его на диске D: вы должны использовать: winfr C: D: /n UsersAlexDocumentsimportant_document.pdf Как восстановить файл в режиме Segment Режим Segment работает почти так же, как режим Default. Чтобы использовать режим Segment, который проверяет сегменты записи файла, нужно использовать /r в дополнение к /n. Другими словами, вы можете создавать команды восстановления в режиме Segment так же, как вы строите команды режима Default - просто добавьте /r. Например, чтобы восстановить все удаленные файлы MP3 с вашего диска C: и сохранить их на диске D: вы должны выполнить: winfr C: D: /r /n *.mp3 Поэтому, если поиск в режиме Default не находит того, что вы ищете, добавьте /r и попробуйте снова. Как восстановить файл в режиме Signature Режим Signature работает немного по-другому. Он проверяет типы файлов, поэтому он может найти только удаленные файлы определенных типов файлов. Чтобы использовать режим Signature, вам нужно использовать /x, чтобы указать режим Signature, и /y: чтобы указать список групп типов файлов, которые вы хотите найти. Вот список поддерживаемых типов файлов и групп, в которые они отсортированы, взяты из документации Microsoft: ASF: wma, wmv, asf JPEG: jpg, jpeg, jpe, jif, jfif, jfi MP3: mp3 MPEG: mpeg, mp4, mpg, m4a, m4v, m4b, m4r, mov, 3gp, qt PDF: pdf PNG: png ZIP: zip, docx, xlsx, pptx, odt, ods, odp, odg, odi, odf, odc, odm, ott, otg, otp, ots, otc, oti, otf, oth Обратите внимание, что группа «ZIP» включает ZIP-файлы в дополнение к документам Microsoft Office и OpenDocument. Вы можете открыть этот список в любое время, выполнив следующую команду: winfr /# Допустим, вы хотите найти на диске E: изображения в формате JPEG и сохранить их на диске D:. Вам нужно запустить следующую команду: winfr E: D: /x /y:JPEG Вы можете указать несколько групп файлов, разделяя их запятой. Итак, если вы хотите найти файлы JPEG, PDF и Word, вы должны выполнить: winfr E: D: /x /y:JPEG,PDF,ZIP Больше помощи с winfr Более подробная информация доступна на официальной странице документации Microsoft winfr. На этой странице вы также найдете подробный список всех параметров командной строки winfr. Для того чтобы изучить основы, просто запустите winfr или winfr /?. Есть также дополнительные параметры, которые вы можете увидеть, запустив winfr /!.
img
Операционные системы Unix традиционно используют такие понятия, как стандартный ввод, вывод и вывод ошибки. Чаще всего ввод — это клавиатура, а вывод это на кран. Но конечно же мы можем выводить исполнение какой-то команды в файл и передавать другой команде, потому что работая в Linux, создается такая последовательность из команд, т.е результат предыдущей мы отправляем следующей и т.д Целью данной статьи является рассмотреть: Перенаправление стандартных ввода, вывода и ошибок; Передача вывода одной команды в качестве аргументов другой; Получение выходных данных в файл и на стандартный вывод; Основные понятия: Stdin (0) – ввод Stdout(1) – вывод Stderr (2) – вывод ошибки > - передать в >> - дописать в list.txt. По сути означает выполнить команду, а результат передать в файл. Фал можно посмотреть командой cat list.txt. И мы можем убедится, что в данном файле находится перечень, всего что находилось в данной папке. Если мы выполним еще раз команду ls > list.txt, то данный файл каждый раз будет перезаписываться. Если же мы хотим, чтобы наш файл не перезаписывался, а дописывался, используем другую стрелочку ls >> list.txt. И теперь вы можете видеть, что файл стал больше. Т.е. у нас записалось, то что было, а затем еще раз добавилось. Если опять выполнить команду со стрелочками >> , то опять допишется информация в файл. Вот таким образом работают “стрелочки”. Стандартный вывод ошибок. Мы можем, например, сказать машине, выведи нам содержимое папки bob, которая не существует ls bob > result.txt, естественно мы получим ошибку которую система вывела на экран. Экран является стандартным выводом ошибок. В нашем случае нет папки bob и нет файла resut.txt. Если мы хотим отправить ошибку в файл, так же как результат выполнения команды, то ls bob 2> result.txt, вспоминаем основные понятия, в которых было указанно, что 2 – это стандартный вывод ошибки. Следовательно, на экране мы уже не видим ошибки, потому что она отправилась в указанный файл. Кстати мы можем объединить стандартный вывод команды и стандартный вывод ошибки. Например: ls bob > result.txt 2> error.txt. Выведи содержимое папки bob в файл result.txt, а если возникнет ошибка внеси в файл error.txt. В таком случае и команда выполнится и что-то будет в файле и если ошибка возникнет, то она будет записана в файл error.txt. Это можно применять на практике, когда мы что-то делаем и предполагаем, что в процессе выполнения возникнут ошибки, то используя данную конструкцию данные ошибки мы все можем отправить в отдельный файл. Конвейер Конвейер умеет передавать выходные данные из одной программы, как входные данные для другой. Т.е. выполняется команда, мы получаем результат и передаем эти данные далее на обработку другой программе. Например, выполнить команду ls и далее мы могли стрелочкой отправлять результаты выполнения команды в файл, т.е. мы меняли только стандартный вывод, а не передавали другой программе. А можем выполнить ls | grep r , т.е. получить содержимое и передать по конвейеру команде сортировки и сказать отсортировать по наличию буквы r, а если перенаправить еще вывод в файл, то cat имя файла , мы сможем увидеть информацию в файле. Но есть другая команда tee которая позволяет работать немного удобнее. Например: ls | tee output.txt. Те данная команда выводит информацию сразу на экран и в указанный файл. Что достаточно удобно с точки зрения работы с выводами. И еще одна команда xargs – она построчно работает с выводами. Если у нас есть какая-то команда, которая выдает нам вывод в виде нескольких строк ответа, то мы можем эти строки построчно передавать этой команде, т.е. не одной кашей, а построчно. Например find . –name “*.txt” найти все файлы в текущем каталоге с расширением txt. И если бы мы захотели удалить все эти файлы нам бы пришлось построчно их удалять, но мы можем сказать, чтобы выходные данные были переданы по конвейеру xargs и удалить. find . –name “*.txt” | xargs rm -f Как видите после данной конструкции команд файлов не осталось. Т.е. данные построчно передались на команду удаления, которая построчно каждый файл с ключом –f (принудительно) их и удалила.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59