Информационный скрипт Praat and sox

Как я могу сделать следующее?

  1. Звуковой объект выбран
  2. сохранить звуковой объект как wav (как временное имя файла)
  3. запустить sox -i adsda.wav или soxi adsda.wav
  4. вывести на дисплей результат sox -i
  5. удалить временный файл

person user3022418    schedule 15.11.2014    source источник


Ответы (1)


Вы можете выполнить sox, вызвав директиву system, а затем записать результат во временный файл. Затем вы можете прочитать этот временный файл в Praat с помощью readFile$(). Вот пример:

infile$ = "sound.wav"
outfile$ = "soxi.out"
sound = Create Sound as pure tone: "tone",
  ... 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01
Save as WAV file: infile$

system soxi 'infile$' > 'outfile$'
soxi$ = readFile$(outfile$)
appendInfo: soxi$

deleteFile: infile$
deleteFile: outfile$
removeObject: sound

Я не уверен, какие изменения (если таковые имеются) потребуются для Windows, но, учитывая, что вы используете sox, это, вероятно, не проблема.

Обратите внимание, что в настоящее время (Praat v.5.4) директива system по-прежнему использует старый синтаксис, который использует подстановку переменных. Это, вероятно, изменится в будущем. Но этот сценарий должен оставаться пригодным для использования даже в этом случае.

person jja    schedule 16.11.2014
comment
Спасибо! почему-то получаю ошибку: Неизвестная функция «readFile$» в формуле. Строка скрипта 5 не выполнена или не завершена: « soxi$ = readFile$(outfile$) » Команда меню «Выполнить» не завершена. не уверен, почему, но я получаю информацию в праате. @jja - person user3022418; 16.11.2014
comment
Странно. Неизвестная ошибка функции может быть связана с более старой версией Praat. В этом случае вы можете использовать soxi$ < 'outfile$', что является старым способом. Хотя я еще не пробовал. Но похоже, что это работает для вас, тем не менее, так что это хорошо. :) - person jja; 16.11.2014