diff --git a/api-request.sh b/api-request.sh new file mode 100755 index 0000000..41979eb --- /dev/null +++ b/api-request.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# +# Runs request to RVC API on localhost. + +set -e + +host="http://127.0.0.1:8000" + +url="${host}/inference" + +url+="?res_type=json" + +model_path="" +index_path="" +input_audio="" +output_audio_suffix="" + +while [ $# -gt 0 ]; do + if [ "$1" == "--model_path" ]; then + model_path="$2" + elif [ "$1" == "--index_file" ]; then + index_path="$2" + elif [ "$1" == "--input_audio" ]; then + input_audio="$2" + else + arg_name="${1#--}" + arg_value="$2" + + url+="&${arg_name}=${arg_value}" + output_audio_suffix+="-${arg_name}_${arg_value}" + fi + + shift + shift +done + +model_path_base="$(basename "${model_path}")" +model_path_base_without_ext="${model_path_base%.*}" +index_path_base="$(basename "${index_path}")" +input_audio_base="$(basename "${input_audio}")" +input_audio_dirname="$(dirname "${input_audio}")" +output_audio_base_without_ext="${input_audio_base%.*}" +output_audio="${input_audio_dirname}/${output_audio_base_without_ext}-${model_path_base_without_ext}${output_audio_suffix}.wav" + +cp "${model_path}" "./assets/weights/${model_path_base}" +cp "${input_audio}" "./assets/audios/${input_audio_base}" + +if [ -f "${index_path}" ]; then + url+="&index_file=${index_path_base}" + cp "${index_path}" "./assets/indices/${index_path_base}" +fi + +curl -X "POST" "${url}" \ + -H "accept: application/json" \ + -H "Content-Type: multipart/form-data" \ + -F "modelpath=${model_path_base}" \ + -F "input_audio=/audios/${input_audio_base}" \ +| jq -r '.audio' \ +| base64 -d > "${output_audio}"