高大上吧,大家都习惯了用微信聊天发语音对话和语音转文字功能,这不就是耳聋和盲人对话的核心技术么,今天我们用百度技术带大家也实现这种功能,直接语音转文字、文字转语音的功能,实现一个自己的聊天工具,门槛就是这么低。下面介绍这两种实现的核心技术:
一、语音转文字的功能——百度语音识别
1.介绍
API网址: http://APIstore.baidu.com/APIworks/servicedetail/792.html
利用百度语音识别API,可以轻松实现语音转文字的功能。这里可以用手机采集一段录音,语音的采集是用一些参数要求的,这里以APIStore上“语音识别”的API进行一些介绍:
首先,接口地址: http://APIs.baidu.com/APIstore/vop/baiduvopjson ,采用post请求方式;
其次,参数,放在请求的body里,介绍如下:
1) audioBase64:语音文件base64后的字符串,并且要求是urlencode进行转码的;
2) format:支持的格式,压缩格式。支持:pcm(不压缩)、wav、opus、speex、amr、x-flac;
3) rate:采样率,支持 8000 或者 16000;
4) channel:声道数,1:单声道 ;2:双通道;
5) lan:支持语言种类:中文(zh)、粤语(ct)、英文(en);
当然,还有一个apikey的参数,用户用户访问该API的唯一认证凭证,放在请求的header里。
2 .代码实现:
1 )首先我们要制作一段录音。
依照参数要求我们生成pcm格式的,采样率为8000,单声道,中文吧。其他格式的语音,大家还是明确一下这些它们各自的这些参数。
2 )拼接调用该API所需要的参数。

根据录制的语音参数,我们可以拼接参数param="format=pcm&rate=8000&channel=1&lan=zh",对于录制的语音,按照要求进行base64编码,java代码如下:

InputStream in = new FileInputStream(audioFilePath);byte[] bytes = new byte[in.available()];// 将文件中的内容读入到数组中in.read(bytes);strBase64 = new  BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串strBase64 = DatatypeConverter.printBase64Binary(bytes);//那么拼接后的参数:String params ="format=pcm&rate=8000&channel=1&lan=zh";       String  audioEncode=ioToBase64(fileName);audioEncode =  URLEncoder.encode(audioEncode);           params=params+"&audioBase64="+audioEncode;import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import javax.xml.bind.DatatypeConverter;
import sun.misc.BASE64Encoder;
import com.alibaba.fastjson.JSONObject;
public class TestVoice {public static voidmain(String[] args) throws
UnsupportedEncodingException{String httpUrl = "http://APIs.baidu.com/APIstore/vop/baiduvopjson";String httpArg = "";String jsonResult = request(httpUrl, httpArg);JSONObject jsonObject = JSONObject.parseObject(jsonResult);JSONObject retdataObject = JSONObject.parseObject((String)jsonObject.get("retData"));String content = (String) retdataObject.get("result");System.out.println(content);}public static String request(String httpUrl, String httpArg) {BufferedReader reader = null;String result = null;StringBuffer sbf = new StringBuffer();String fileName = "d:\\test.pcm"; // 源文件try {URL url = new URL(httpUrl);HttpURLConnection connection =(HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");// 填入apikey到HTTP headerconnection.setRequestProperty("apikey",  "08cb827e80ddad16ce5xxxx自己的apikey");//这里是自己的apikeyconnection.setDoOutput(true);String params ="format=pcm&rate=8000&channel=1&lan=zh";//pcm格式
String audioEncode=ioToBase64(fileName);audioEncode =URLEncoder.encode(audioEncode);         params=params+"&audioBase64="+audioEncode;connection.getOutputStream().write(params.getBytes());connection.connect();InputStream is =connection.getInputStream();reader = new BufferedReader(newInputStreamReader(is, "UTF-8"));String strRead = null;while ((strRead =reader.readLine()) != null) {sbf.append(strRead);sbf.append("\r\n");}reader.close();result =sbf.toString();} catch (Exception e) {e.printStackTrace();}return result;}public static String ioToBase64(String audioFilePath) throws IOException {String strBase64 = null;try {InputStream in = new FileInputStream(audioFilePath);byte[] bytes = new byte[in.available()];// 将文件中的内容读入到数组中in.read(bytes);strBase64 = new BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串strBase64 = DatatypeConverter.printBase64Binary(bytes);in.close();} catch (FileNotFoundException fe) {fe.printStackTrace();} catch (IOException ioe) {ioe.printStackTrace();}return strBase64;}
}
4)查看效果:
在eclipse下,ctrl +f11运行结果:
怎么样,伟大的语音变文字就这么实现了。那文字变语音呢?
一、文字转语音的功能——百度语音合成
1.    介绍
百度语音合成利器可以将文字顺利转为语音,咱们继续往下看。
网址: http://APIstore.baidu.com/APIworks/servicedetail/867.html
接口地址: http://APIs.baidu.com/APIstore/baidutts/tts ,采用get请求,这里主要有三个参数:
1)、text:要转换为语音的文本内容。注意文本长度必须小于1024字节;
2)、ctp:客户端类型选择,web 端填写1;
3)、per:发音人选择,取值 0-1 ;0 为女声,1 为男声。
2.    参数拼接
直接拼接到url上。(java代码)
StringBuffer  params = new StringBuffer();String content = "百度语音合成技术";params.append("text="+content);params.append("&lan=zh");params.append("&ctp=1");String serverURL2  = serverURL+"?"+params.toString();

3.    发送请求

String serverURL2  = serverURL+"?"+params.toString();HttpURLConnection conn =  (HttpURLConnection) new URL(serverURL2).openConnection();// add request headerconn.setRequestMethod("GET");conn.setRequestProperty("Content-Type", "Content-Type: audio/pcm; charset=utf-8");// 填入apikey到HTTP headerconn.setRequestProperty("apikey",  "08cb827e80ddad16ce596xxxxxxx自己的apikey");conn.setDoInput(true);conn.setDoOutput(true);conn.connect();
4.    查看结果:

5.     测试的全部java代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
public class BaiduTTS {private static final String serverURL = "http://APIs.baidu.com/APIstore/baidutts/tts";public static void main(String[] args) throws Exception   {StringBuffer params = new StringBuffer();String content = "百度语音合成技术";params.append("text="+content);params.append("&lan=zh");params.append("&ctp=1");String serverURL2 = serverURL+"?"+params.toString();HttpURLConnection conn = (HttpURLConnection) new URL(serverURL2).openConnection();// add request headerconn.setRequestMethod("GET");conn.setRequestProperty("Content-Type", "Content-Type: audio/mp3; charset=utf-8");// 填入apikey到HTTP headerconn.setRequestProperty("apikey",  "08cb827e80ddad16ce596c902cbf3b95");conn.setDoInput(true);conn.setDoOutput(true);conn.connect();printResponse(conn);}private static String printResponse(HttpURLConnection conn) throws Exception {if (conn.getResponseCode() != 200) {return "";}InputStream is = conn.getInputStream();BufferedReader rd = new BufferedReader(newInputStreamReader(is));String line;StringBuffer response = new StringBuffer();while ((line = rd.readLine()) != null) {response.append(line);response.append('\r');}rd.close();JSONObject resultObj = newJSONObject(response.toString());if(resultObj!=null){String status = resultObj.getString("retMsg");if("success".equals(status)){String retData = resultObj.getString("retData");//System.out.println(retData);byte[]  audiobyte = Base64.decodeBase64(retData);FileOutputStream fos = new FileOutputStream(new File("D:\\audio1.mp3"));IOUtils.write(audiobyte, fos);System.out.println("save ok");}}return "";}
}
至此,两大技术都介绍完了,各位开发大牛们可以发挥你的想象,早日开发一个真正属于自己的能解决多语言交流需求的工具了。畅想下,未来常人与盲人、失聪人,不同语种的人们彼此毫无障碍的交流,就像下图这样,是多么让人期待!
(语音和文字互换效果图)

最后,请移步百度APIStore,寻找属于你的API!!!!

百度语音转换技术,让失聪人和盲人独立对话成为可能!相关推荐

  1. 基于GAN的语音转换技术及语音合成TTS

    https://www.toutiao.com/a6714089773171999244/ 介绍 到目前为止,我主要致力于生成人物的图像(或视频),但我希望他们一旦在屏幕上可见就会用对应的声音说话.所 ...

  2. android 百度语音转换工具,百度语音版app下载-百度语音版 安卓版v10.0.10.11-PC6安卓网...

    百度语音版app是一款装机必备应用客户端,百度语音版app来自百度为你打造的更智能的语音交互功能,给您更便捷的搜索体验,有了百度语音版app,告别广告干扰,给您更纯净的资讯阅读环境. 软件介绍 百度语 ...

  3. REST实战——调用百度语音的云服务

    RESTful REST(REpresentation State Transfer)描述了一个架构样式的网络系统,比如说web应用程序.它首次出现在2000年Roy Thomas Fielding的 ...

  4. 在微信的视频通话中将语音转成文字并显示在通话界面中,可以使用语音识别技术,将语音转换成文本,再通过编程技巧将文本显示在通话界面中。实现方法...

    在微信的视频通话中将语音转成文字并显示在通话界面中,可以使用以下步骤进行实现: 使用语音识别技术将语音转换成文本.这可以使用现有的语音识别API,如百度语音识别API等. 通过编程技巧将文本显示在通话 ...

  5. 利用百度语音识别接口将语音转换成文字教程

    一.说明 如果有一个工具能识别音视中的语音并转换成文字输出,由于可以复制粘贴而不需要逐字逐句地打,那我们进行为音频配字幕工作时将会事半功倍. 其中的关键点是音文转换,音文转换其实在很多地方都可以看到比 ...

  6. 语音技术(百度语音)开发 - 第一篇

    语音技术(百度语音)开发 - 第一篇 AI接入指南 短语音识别标准版.查看文档 短语音识别API文档 .调用流程.speech 参数填写.参数说明.等等 官方demo地址 创建应用.百度云平台 网上案 ...

  7. html5d调用百度语音,易语言调用百度语音平台实现文字转换语音功能的代码

    调用百度语音平台实现文字转换语音功能 此功能需要加载精易模块5.6 .版本 2 .支持库 wmp9 .程序集 窗口程序集1 .子程序 _试听按钮_被单击 播放器1.地址 = "http:// ...

  8. 使用百度AI将语音转换成文字(JAVA)

    使用百度AI将语音转换成文字--JAVA 1.安装ffmpeg 2.使用百度AI翻译语音 1.引入dependency 2.将音频转换成文字并写入到文件中. **遇到的问题:** 4.因为需要切割长语 ...

  9. 超七成阅读APP都借百度语音技术促用户增长

    全国十多亿人在这个春节集体"关门闭户"与手机和网络作伴,除了手游和短视频流量飞涨,在线阅读也迎来"高光时刻",特别是当手机阅读APP标配了语音朗读即" ...

最新文章

  1. LazyProphet:使用 LightGBM 进行时间序列预测
  2. Linux添加网站后无法显示,Linux:SElinux导致网站无法访问
  3. e300氛围灯哪里调节_黑色的奔驰E300有了亚光膜的加持 一出场就惊艳四座
  4. 20-190-090-安装-Flink集群安装 flink-1.9.0
  5. 车萝卜CEO马斌斌:真正自动驾驶的时候你更需要HUD和ARHUD...
  6. WordPress Shortcode(简码)介绍及使用详解
  7. 一次http请求中的信息
  8. unity 生成assestbundle资源的插件
  9. 宗地图绘制要求和规范_宗地图绘制的基本要求与内容.ppt
  10. 【阿里图标库的使用】
  11. Visual Studio 2015官方汇总包括下载和视频
  12. 浙江大学计算机学院 翁恺,“中文MOOC第一人”浙江大学教师翁恺获得百万大奖...
  13. thinkphp6+swoole websocket使用教程自研路线不建议使用
  14. html网页中圆角边框的编写,Html实现边框圆角的实例详解
  15. GPS接收机学习小记(一)
  16. c语言课设——药品管理系统
  17. 认清GPU的流处理器作用
  18. 基于用户评论情感分析详细设计与技术实现
  19. 2019北大计算机夏令营,2019年北京大学化学学院“全国优秀大学生夏令营”第三轮通知...
  20. 智云通CRM:客户说“我随便看看”,如何回应才能促进成交?

热门文章

  1. python 练习100题及答案解析
  2. HTML常用标签和特殊符号
  3. 把一个DWG里面的点和高度注记整合成eps里面的高程点
  4. php subscribe event,TP6 事件绑定、监听、订阅
  5. 计算机第一课 教案 纪律,开学第一课安全教育的教案范文
  6. slurm-gpu集群搭建详细步骤
  7. 语音合成(speech synthesis)两种方法-拼接合成和参数合成
  8. Linux 系统相关介绍
  9. JavaWeb-LayUI框架的介绍与使用方式(前端框架篇)
  10. 微信公众号关注后直接登录网站