当前位置: 编程技术>移动开发
本页文章导读:
▪google 地图 语音识别 google map 语音识别
没真的智能机的孩子你伤不起啊有木有!成天都是倒霉Symbian60啊有木有!上次超流量下载了Google Search for S60,里面神奇的有“语音搜索”……然后就是今天碰到android手机.........
▪ andorid自定listview平添删除button,并对列进行删除 andorid自定listview添加删除button,并对列进行删除
废话不多说,直接上代码:没有任何说明的,请大家见谅。
package com.duduli.li;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
imp.........
▪ jqm程序透过phonegap打包后select不可点、没反应 jqm程序通过phonegap打包后select不可点、没反应
<select name="quantity" id="quantity" data-native-menu="true" > <option value="1" data-placeholder="true">1</option>.........
[1]google 地图 语音识别
来源: 互联网 发布时间: 2014-02-18
google map 语音识别
没真的智能机的孩子你伤不起啊有木有!成天都是倒霉Symbian60啊有木有!上次超流量下载了Google Search for S60,里面神奇的有“语音搜索”……然后就是今天碰到android手机了,自带一个语音输入法啊!这准确率杆杆地!不过根据我多秒经验,S60的废柴API库绝对没有这么完美的语音识别(玩过诺基亚的应该都知道,待机状态长按右软件那个出来的是自带的识别功能),所以肯定Google留了一手!
(软件见http://www.google.com/intl/zh-CN_ALL/mobile/google-mobile-app/)
废话多了,现在看看Google的猥琐API之STT!(属于speech-api v1的recognize)
http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN
不过使用不是那么简单的哦……
如何调用
要使用这个API,你得先有一些心理素质:面对倒霉的FLAC格式,因为这个API只支持FLAC格式的数据,杯具啊。
不过你找到了我的博客,那么你是幸福的,因为我已经为你准备了不少好东西了。(顺便说一句,如果要转载记得清楚地标注“来自http://blog.laobubu.net”,我信任你。)
现在看看如何请求数据:
【URL】http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN
【方式】POST
【请求头】Content-Type:audio/x-flac; rate=16000
【POST】flac文件的数据
如果你人品大爆发,你成功了,可以得到类似这个的结果
实例:用于Python
#By laobubu.net
import urllib2
FILE='1.flac' #这里假设在当前文件夹下有一个叫1.flac的文件被识别
print response.read().decode('UTF-8')头疼:FLAC文件格式
这里我长话短说,google的flac也有限制,22050 Hz+201kbps还正常,如果比这个大多了就不对了。
不过还有最要命的问题,怎么生成FLAC文件?
没关系,这里有救星:flac.exe包下载
http://datastorage.laobubu.net/FLAC.zip (
具体使用方法是【flac.exe 文件.wav】这样在命令行调用即可,测试得知:不支持MP3等格式,但是支持基本的wav格式。
好了,你可以去制造你的app了,哈哈。
爱你:来自laobubu实验室的福音
为了方便,我写了一个python程序,放在Google App Engine上面,只要提交一个音频文件的URL(/blog_article/支持MP3、wav等常见格式/index.html),且文件不大,就可以得到结果了哦。(再次强调,跟你说的,上laobubu.net没错的)
API入口:http://laobubumf.appspot.com/stt/
备用入口:http://glab.laobubu.net/stt/
喜欢的话记得+1哦,当然捐赠我最不介意
转http://blog.laobubu.net/546 Google的语音识别API,支持各种语言
关于将其他格式的多媒体文件转换成flac格式可以参照:
http://wujie2008.iteye.com/blog/1237788
没真的智能机的孩子你伤不起啊有木有!成天都是倒霉Symbian60啊有木有!上次超流量下载了Google Search for S60,里面神奇的有“语音搜索”……然后就是今天碰到android手机了,自带一个语音输入法啊!这准确率杆杆地!不过根据我多秒经验,S60的废柴API库绝对没有这么完美的语音识别(玩过诺基亚的应该都知道,待机状态长按右软件那个出来的是自带的识别功能),所以肯定Google留了一手!
(软件见http://www.google.com/intl/zh-CN_ALL/mobile/google-mobile-app/)
废话多了,现在看看Google的猥琐API之STT!(属于speech-api v1的recognize)
http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN
不过使用不是那么简单的哦……
如何调用
要使用这个API,你得先有一些心理素质:面对倒霉的FLAC格式,因为这个API只支持FLAC格式的数据,杯具啊。
不过你找到了我的博客,那么你是幸福的,因为我已经为你准备了不少好东西了。(顺便说一句,如果要转载记得清楚地标注“来自http://blog.laobubu.net”,我信任你。)
现在看看如何请求数据:
【URL】http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN
【方式】POST
【请求头】Content-Type:audio/x-flac; rate=16000
【POST】flac文件的数据
如果你人品大爆发,你成功了,可以得到类似这个的结果
{"status":0,"id":"54e1babccaa58682ffbb02ceb42aa47c-1",
"hypotheses":[{"utterance":"测试程序","confidence":0.8556527}]}不过不简单哦实例:用于Python
#By laobubu.net
import urllib2
FILE='1.flac' #这里假设在当前文件夹下有一个叫1.flac的文件被识别
url = 'http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN'
audio=open(FILE,'rb').read()
headers = {'Content-Type' : 'audio/x-flac; rate=16000'}
req = urllib2.Request(url, audio, headers)
response = urllib2.urlopen(req)print response.read().decode('UTF-8')头疼:FLAC文件格式
这里我长话短说,google的flac也有限制,22050 Hz+201kbps还正常,如果比这个大多了就不对了。
不过还有最要命的问题,怎么生成FLAC文件?
没关系,这里有救星:flac.exe包下载
http://datastorage.laobubu.net/FLAC.zip (
具体使用方法是【flac.exe 文件.wav】这样在命令行调用即可,测试得知:不支持MP3等格式,但是支持基本的wav格式。
好了,你可以去制造你的app了,哈哈。
爱你:来自laobubu实验室的福音
为了方便,我写了一个python程序,放在Google App Engine上面,只要提交一个音频文件的URL(/blog_article/支持MP3、wav等常见格式/index.html),且文件不大,就可以得到结果了哦。(再次强调,跟你说的,上laobubu.net没错的)
API入口:http://laobubumf.appspot.com/stt/
备用入口:http://glab.laobubu.net/stt/
喜欢的话记得+1哦,当然捐赠我最不介意
转http://blog.laobubu.net/546 Google的语音识别API,支持各种语言
关于将其他格式的多媒体文件转换成flac格式可以参照:
http://wujie2008.iteye.com/blog/1237788
[2] andorid自定listview平添删除button,并对列进行删除
来源: 互联网 发布时间: 2014-02-18
andorid自定listview添加删除button,并对列进行删除
废话不多说,直接上代码:没有任何说明的,请大家见谅。
废话不多说,直接上代码:没有任何说明的,请大家见谅。
package com.duduli.li;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class MySimpleCursorAdapter extends SimpleCursorAdapter {
private LayoutInflater inflater;
private ViewHolder vh = null;
private List<Map<String, Object>> data;
private Context context;
public MySimpleCursorAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, layout, c, from, to);
this.inflater = LayoutInflater.from(context);
this.context = context;
data = getData();
// TODO Auto-generated constructor stub
}
@Override
public Cursor getCursor() {
// TODO Auto-generated method stub
return super.getCursor();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return super.getCount();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null){
vh = new ViewHolder();
convertView = inflater.inflate(R.layout.showbook, null);
vh.bookID = (TextView) convertView.findViewById(R.id.bookID);
vh.bookName = (TextView) convertView.findViewById(R.id.bookName);
vh.bookPosition = (TextView) convertView.findViewById(R.id.bookPosition);
vh.button = (Button) convertView.findViewById(R.id.button);
convertView.setTag(vh);
}else{
vh = (ViewHolder) convertView.getTag();
}
// System.out.println(position+"::::"+data.get(position).get("bookName"));
// System.out.println("size is :"+getData().size());
// System.out.println(list.get(0).get("bookName"));
// System.out.println(list.get(position).get("bookID"));
// System.out.println("position:"+position);
vh.bookID.setText((String)data.get(position).get("bookID"));
vh.bookName.setText((String)data.get(position).get("bookName"));
vh.bookPosition.setText((String)data.get(position).get("bookPosition"));
vh.button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("AAA : " + position);
System.out.println(data.get(position).get("bookID"));
delDialog(context,(String)data.get(position).get("bookName"));
}
});
return convertView;
}
// public void setGone(){
// System.out.println("gone");
// vh.button.setVisibility(View.GONE);
// }
public List<Map<String, Object>> getData(){
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
while(getCursor().moveToNext()){
Map<String, Object> map = new HashMap<String, Object>();
// System.out.println("ID: "+getCursor().getString(0));
map.put("bookID", getCursor().getString(0));
// System.out.println("NAME: "+getCursor().getString(1));
map.put("bookName", getCursor().getString(1));
map.put("bookPosition", getCursor().getString(3));
list.add(map);
}
/*for(int i=0; i<list.size(); i++){
System.out.println(i);
System.out.println(list.get(i).get("bookID"));
System.out.println(list.get(i).get("bookName"));
}*/
// System.out.println(list.get(1).get("bookName"));
return list;
}
public void delDialog(Context context,String bookName){
new AlertDialog.Builder(context)
.setTitle("删除书本")
.setMessage("你确定要删除"+bookName+"?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
}
package com.duduli.li;
import android.widget.Button;
import android.widget.TextView;
public class ViewHolder {
public TextView bookID;
public TextView bookPosition;
public TextView bookName;
public Button button;
}
[3] jqm程序透过phonegap打包后select不可点、没反应
来源: 互联网 发布时间: 2014-02-18
jqm程序通过phonegap打包后select不可点、没反应
<select name="quantity" id="quantity" data-native-menu="true" >
<option value="1" data-placeholder="true">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
在浏览器上没有问题,但是程序通过phonegap打包后就出现问题了。下拉框点击没有反应,或者是有个下拉框的时候总是提一个下拉框获得焦点等等。
最总解决办法<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" />将user-scalable=no改成yes
<select name="quantity" id="quantity" data-native-menu="true" >
<option value="1" data-placeholder="true">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
在浏览器上没有问题,但是程序通过phonegap打包后就出现问题了。下拉框点击没有反应,或者是有个下拉框的时候总是提一个下拉框获得焦点等等。
最总解决办法<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" />将user-scalable=no改成yes
最新技术文章: