每日新闻

每日新闻

GoCN每日新闻资讯
有问必答

有问必答

Go相关的问题,技术相关的问题
文章分享

文章分享

技术文章分享,让知识传播给更多的人
招聘应聘

招聘应聘

为Gopher服务的招聘应聘平台

RobotGo v0.20.0,Golang跨平台控制鼠标键盘位图屏幕,增加全局事件监听

文章分享veni 回复了问题 • 3 人关注 • 4 个回复 • 3030 次浏览 • 2016-11-01 16:45 • 来自相关话题

orm.Fielder接口问题

回复

有问必答eric 发起了问题 • 1 人关注 • 0 个回复 • 2400 次浏览 • 2016-11-01 16:18 • 来自相关话题

好玩的github项目-科大讯飞语音linux在线语音合成后台服务

Go开源项目wwdyy 发表了文章 • 2 个评论 • 6150 次浏览 • 2016-11-01 13:53 • 来自相关话题

转自github用户imroc ### ontts: ontts 是go写的语音合成服务(文本转语音),原理是cgo调用的科大讯飞的在线语音合成linux SDK(用go封装SDK)。支持单次合成与后台合成服 ...查看全部
转自github用户imroc

### ontts:

ontts 是go写的语音合成服务(文本转语音),原理是cgo调用的科大讯飞的在线语音合成linux SDK(用go封装SDK)。支持单次合成与后台合成服务两种模式,后台合成服务是订阅redis中的数据(业务系统可将待合成文本发布到redis),一有数据立马合成并存储到磁盘

### 安装:

`go get github.com/imroc/ontts`

### 运行:

需要将libmsc.so加入环境变量

```
cp xf/lib/x64/libmsc.so /usr/local/lib/
vi ~/.bashrc
export LD_LIBRARY_PATH = /usr/local/lib
```

### 使用示例:

单次合成:

`./ontts -t "云喇叭快递,快递小管家,您的快递到了,请于下午6点前到学校后门申通快递取件" -o test.wav -lp "appid = 5808ae7e, work_dir = ."`

启动合成后台服务:

`./ontts -r ":6379" -d /tmp/out -lp "appid = 5808ae7e, work_dir = ."`
### redis数据:

后台合成的服务是订阅的redis中"tts"的通道中的数据,redis发布数据示例:

`redis-cli>publish tts "{\"id\":\"245671051\",\"txt\":\"这是一段测试语音\"}"`
注:生成的语音文件名是id加".wav"后缀

### 命令参数:

讯飞语音参数选项:
- -tp TTS合成参数[有默认值]
- -lp 登录参数

单次合成模式选项:
- -t 待合成的文本
- -o 音频输出路径

合成服务模式选项:
- -d 音频保存的目录
- -s 合成速度级别(1-10),数值越小速度越快,越耗CPU[默认为1]
- -r redis连接地址
- -rp redis密码

日志选项:
- -l 日志输出路径[默认./ontts.log]
- -ll 日志输出级别(debug,info,warn,error)

其他:
- -h 查看帮助

### 目录:

```
── ontts
├── glide.yaml (glide依赖配置)
├── main.go (程序入口)
├── README.md
├── server (TTS合成主体逻辑的package)
│ └── server.go
├── speed_test.go (速度测试)
└── xf (讯飞SDK的Go封装)
├── doc (讯飞语音linux SDK相关参考)
├── include (cgo需要用到的头文件)
├── lib (动态链接库 SDK)
├── README.md
└── xf.go
```

Github地址:https://github.com/imroc/ontts

要是用几个关键词/包名来表达go的精髓,你会用什么???

有问必答九命猫 回复了问题 • 3 人关注 • 3 个回复 • 1575 次浏览 • 2016-11-01 11:39 • 来自相关话题

reflect.DeepEqual 效率如何?

技术讨论edwinxie 发表了文章 • 3 个评论 • 2694 次浏览 • 2016-11-01 10:00 • 来自相关话题

假如有两个map,内容一样但顺序不一样,譬如: ```go map1:=map[string]int{"a":1,"b":2,"c":3}; map2:=map[string]int{"a":1,"c":3,"b":2}; ...查看全部
假如有两个map,内容一样但顺序不一样,譬如:
```go
map1:=map[string]int{"a":1,"b":2,"c":3};
map2:=map[string]int{"a":1,"c":3,"b":2};
```
如果我们需要判断两个map是否一致,最直观的做法是:循环map1,看看每个key是否都在m2中存在,再比较map1[key]是否和map2[key]相等,如果都ok,再依次循环map2。
```go
func compareMap(map1, map2 map[string]int) bool {
for k1, v1 := range map1 {
if v2, has := map2[k1]; has {
if v1 != v2 {
return false
}
} else {
return false
}
}
for k2, v2 := range map2 {
if v1, has := map1[k2]; has {
if v1 != v2 {
return false
}
} else {
return false
}
}
return true
}
```
如上的代码看起来还挺麻烦的,原来,**go的反射包中有一个reflect.DeepEqual**可以方便帮助我们解决这个问题:
```go
fmt.Println("compareMap(map1,map2) = ", compareMap(map1, map2))
fmt.Println("reflect.DeepEqual(map1,map2) = ", reflect.DeepEqual(map1, map2))
fmt.Println()
map3 := map[string]int{"a": 1, "b": 2, "c": 3, "d": 1}
fmt.Println("compareMap(map1,map3)=", compareMap(map1, map3))
fmt.Println("reflect.DeepEqual(map1,map3) = ", reflect.DeepEqual(map1, map3))
```
output:
```go
compareMap(map1,map2) = true
reflect.DeepEqual(map1,map2) = true

compareMap(map1,map3)= false
reflect.DeepEqual(map1,map3) = false
```
是不是方便太多~由于是反射操作,我们再来比较一下两者的效率:
```go
start := time.Now()
for i := 0; i < 100000; i++ {
compareMap(map1, map2)
}
end := time.Now()
duration := end.Sub(start)
fmt.Println("100000 call compareMap(map1,map2) duration=", duration)

start = time.Now()
for i := 0; i < 100000; i++ {
reflect.DeepEqual(map1, map2)
}
end = time.Now()
duration = end.Sub(start)
fmt.Println("100000 call reflect.DeepEqual(map1,map2) duration=", duration)

```
output:
```go
100000 call compareMap(map1,map2) duration= 22.499392ms
100000 call reflect.DeepEqual(map1,map2) duration= 163.500884ms
```
**由此可见,大约相差8倍。但在实际开发过程中,若无大量类似的compare操作,这种效率的差距是可以忽略不计的。另外,在我们不知道欲比较的值的类型的情况下,用reflect更是不可或缺。**

大家都有哪些 golang code 的 debug 的神器推荐?

有问必答tupunco 回复了问题 • 17 人关注 • 11 个回复 • 6334 次浏览 • 2016-11-01 09:58 • 来自相关话题

关于golang写的web服务,大家都是怎么调试的

有问必答larry 回复了问题 • 13 人关注 • 9 个回复 • 5323 次浏览 • 2016-11-01 09:58 • 来自相关话题

怎么分析和理解golang的pprof

有问必答tupunco 回复了问题 • 4 人关注 • 2 个回复 • 7590 次浏览 • 2016-11-01 09:11 • 来自相关话题

如何解析未知结构的xml

有问必答stevewang 回复了问题 • 3 人关注 • 2 个回复 • 4652 次浏览 • 2016-10-31 23:41 • 来自相关话题

Syscall疑问

有问必答SuperFashi 回复了问题 • 2 人关注 • 1 个回复 • 2379 次浏览 • 2016-10-31 23:28 • 来自相关话题

有没有好的图片处理包,能实现大图中寻找小图

有问必答veni 回复了问题 • 4 人关注 • 1 个回复 • 2045 次浏览 • 2016-10-31 21:45 • 来自相关话题

说说你经常使用的go标准包里哪些包?

有问必答astaxie 回复了问题 • 6 人关注 • 1 个回复 • 2066 次浏览 • 2016-10-31 21:00 • 来自相关话题

Hprose 2.0 for Golang 用户手册

开源程序andot 发表了文章 • 3 个评论 • 1964 次浏览 • 2016-10-31 20:58 • 来自相关话题

HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。 它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它 ...查看全部
HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。

它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。

# [Hprose for Golang 用户手册](https://github.com/hprose/hprose-golang/wiki "Hprose for Golang 用户手册")
1. [安装与使用](https://github.com/hprose/hprose-golang/wiki/%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8 "安装与使用")
2. [Hprose 序列化](https://github.com/hprose/hprose-golang/wiki/Hprose-%E5%BA%8F%E5%88%97%E5%8C%96 "Hprose 序列化")
3. [Hprose 客户端](https://github.com/hprose/hprose-golang/wiki/Hprose-%E5%AE%A2%E6%88%B7%E7%AB%AF "Hprose 客户端")
4. [Hprose 服务器](https://github.com/hprose/hprose-golang/wiki/Hprose-%E6%9C%8D%E5%8A%A1%E5%99%A8 "Hprose 服务器")
5. [Hprose 过滤器](https://github.com/hprose/hprose-golang/wiki/Hprose-%E8%BF%87%E6%BB%A4%E5%99%A8 "Hprose 过滤器")
6. [Hprose 服务器事件](https://github.com/hprose/hprose-golang/wiki/Hprose-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BA%8B%E4%BB%B6 "Hprose 服务器事件")
7. [Hprose 中间件](https://github.com/hprose/hprose-golang/wiki/Hprose-%E4%B8%AD%E9%97%B4%E4%BB%B6 "Hprose 中间件")
8. [推送服务](https://github.com/hprose/hprose-golang/wiki/%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1 "推送服务")

## 附录

### A. [2.0 新特征](https://github.com/hprose/hprose-golang/wiki/2.0-%E6%96%B0%E7%89%B9%E5%BE%81 "2.0 新特征")
### B. [性能测试](https://github.com/hprose/hprose-golang/wiki/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95 "性能测试")

Go 程序如何高效地调试?

Golangsheepbao 回复了问题 • 15 人关注 • 11 个回复 • 11540 次浏览 • 2016-10-31 20:50 • 来自相关话题

beego解析请求参数到struct,结果为空(postman)

有问必答astaxie 回复了问题 • 2 人关注 • 1 个回复 • 4983 次浏览 • 2016-10-31 18:03 • 来自相关话题