【问题标题】:How to get recode file save as .wave file如何将记录文件另存为 .wav 文件
【发布时间】:2015-09-23 11:30:27
【问题描述】:

我想在为 Ivr 发送 vxml 请求时保存音频,我开发这样的 Ivr 代码..

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1">
 <form>
    <record name="myrecording" beep="true">
      <prompt>
        Please record a message after the beep.
      </prompt>
      <filled>
        <prompt>
          You just recorded the following message: <value expr="myrecording"/>
        </prompt>
      </filled>
    </record>
  </form>
</vxml>

我想在播放后重新编码味精。这个问题怎么做?我想用java回答。

【问题讨论】:

    标签: java ivr vxml


    【解决方案1】:

    您可以通过在录制变量中添加标签来保存录制的消息,并使用一些服务器端代码(如 PHP/JSP/ASPX)处理提交请求,其中包含一个 PHP 示例:
    编辑:添加使用 apache commons 的 record.jsp:http://commons.apache.org/proper/commons-fileupload/
    还修改了 record.vxml 以将数据提交到 record.jsp ,record.php 保留作为参考

    “记录.vxml”

    <?xml version="1.0" encoding="UTF-8"?>
    <vxml version="2.1">
        <form>
            <record name="myrecording" beep="true">
                <prompt>
                    Please record a message after the beep.
                </prompt>
                <filled>
                    <prompt>
                        You just recorded the following message: <value expr="myrecording"/>
                    </prompt>
                    <submit expr="record.jsp" method="post" namelist="myrecording" enctype="multipart/form-data" />      
                </filled>
            </record>
        </form>
    </vxml>
    

    “记录.php”

    <?PHP
    header('Cache-Control: no-cache');
    error_reporting (0);
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    echo "<vxml version=\"2.0\">";
    echo "<form id=\"main\">";
    echo "<block>";
    if ($HTTP_POST_FILES) {
    foreach ($HTTP_POST_FILES as $key => $value) {
      foreach ($value as $Filename) {
       if (strpos($Filename, "WINNT")) { $ServerSide = $Filename; }
       if (strpos($Filename, ".wav")) { $ClientSide = $Filename; }
      } // for each statement
      $ServerSide = str_replace("\\\\", "/", $ServerSide);
      if (!copy($ServerSide, "c:/audio-storage/temp.wav")) {
       echo "Could not save filename: " . $ServerSide;
      } // if statement
      else {
       echo "Successfully saved filename: " . $ServerSide;
      } // else statement
    } // for each statement
    } // if statement
    echo "</block>";
    echo "</form>";
    echo "</vxml>";
    ?>
    

    record.jsp

    <%@ page import="org.apache.commons.fileupload.*"%>
    <%@ page import="org.apache.commons.fileupload.servlet.*"%>
    <%@ page import="org.apache.commons.fileupload.disk.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.Date"%>
    <%@ page import="java.text.DateFormat"%>
    <%@ page import="java.text.SimpleDateFormat"%>
    <?xml version='1.0'?>
      <vxml version="2.1">
        <form>
        <%
          DateFormat dateFormat = new SimpleDateFormat("yyyy_MM-dd_HH:mm:ss");
          Date date = new Date();
          boolean isMultipart = ServletFileUpload.isMultipartContent(request);
          FileItemFactory factory = new DiskFileItemFactory();
          ServletFileUpload upload = new ServletFileUpload(factory);
          List fileItems = null;
    
          try {
            fileItems = upload.parseRequest(request);
          } catch (Exception e) {
            e.printStackTrace();
          } 
    
          try {
            Iterator iter = fileItems.iterator();
    
            while (iter.hasNext()) {
              FileItem item = (FileItem) iter.next();
              String newFileName = "Recording-" + dateFormat.format(date);
              String inputFilePath = "c:/audio-storage/"+ newFileName + ".wav";
              File file = new File(inputFilePath);
    
              try {//Writing the wav file
                item.write(file);
              } catch (Exception e) {
                e.printStackTrace();
              }
            }
          } catch (Exception e) {
            e.printStackTrace();
         }
        %>
        <block>
          <prompt> Audio upload complete! </prompt>
        </block>
      </form>
    </vxml>
    

    【讨论】:

    • 请在Restful web service中使用java、jsp回答。
    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多