Skip to content

大师兄的博客

专注无聊20年,数过的小羊连起来可以绕地球两圈

Menu
  • 首页
  • 技术交流
    • 原创
    • WebGL教程
    • js小程序在线演示
    • 摘要总结
  • 小评论
    • 动漫短评
    • 其他短评
  • 日志/心情
    • My Piano
    • 絮絮叨叨
    • 长篇大论
  • 关于我
    • 留言板
Menu

调戏谷歌娘的正确方法(附代码)

Posted on 2013 年 5 月 18 日2013 年 5 月 19 日 by wysaid

a1ec08fa513d26977c52300555fbb2fb4216d8e0( 本文地址: https://wysaid.org/435.html )

(Only for freshman)

blog.wysaid.org/BK_MUSIC/blog435.mp3  (点击左边的播放按钮,播放销魂的女音)

还在为暴走漫画里面销魂的女声鸡冻不已吗?

还在为程序缺少配音而焦虑吗?

还在为SAPI之类的声音包臃肿不堪而烦恼吗?

还是说你根本没有找到好的解决办法呢?

谷歌娘来帮你!

不要臃肿的语音包,不要讨厌的的语音SDK。不用打开网页刷新。本屌丝帮你拉近与谷歌娘之间的距离。

下面的C++代码可以让谷歌娘读出你输入的中文,同时保存到本地磁盘哦。来一发吧。

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* author: wysaid
* blog: https://wysaid.org/
* 注意事项: 谷歌娘的地址可能更新,
*           所以链接(下方定义的GOOGLE_URL)如果失效了本程序就无法正确工作。
*           如果链接失效,并且感兴趣不妨自行摸索修改URL或者通知我
* 说明: 这是很简单的小程序,并没有多少技术含量,希望可以对你有一点点帮助。
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <wininet.h>
 
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "winmm.lib")
// 定义10M 的内存缓存。
#define CACHE_SIZE (10*1024*1024)
#define BUFFER_SIZE 10000
#ifndef MAX_PATH
#define MAX_PATH 260
#endif
 
#define GOOGLE_URL "http://translate.google.cn/translate_tts?ie=UTF-8&q=%s&tl=zh-CN&total=1&idx=0&textlen=3&prev=input"
 
char g_cache[CACHE_SIZE];
 
bool getGoogleMp3FileByURL(LPCSTR url, LPCSTR filename, LPSTR cache)
{
HINTERNET hSession = InternetOpen("blog.wysaid.org", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hSession == NULL) return false;
HINTERNET hHttp =  InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0);
if(hHttp == NULL) return false;
printf("正在请求 %s, 视网络状况不同可能会有一些等待...\n", filename);
unsigned long buffersize = 0;
InternetReadFile(hHttp, cache, CACHE_SIZE - 1, &buffersize);
cache[buffersize] = 0;
puts("文件获取成功,正在保存...");
FILE *fp = fopen(filename, "wb");
fwrite(cache, buffersize, 1, fp);
fclose(fp);
printf("文件 %s 保存成功!\n", filename);
InternetCloseHandle(hHttp);
InternetCloseHandle(hSession);
return true;
}
 
void char2Hex(LPSTR srcStr, LPSTR dstStr, int n)
{
while(n--)
{
unsigned char c = *srcStr++;
*dstStr++ = '%';
*dstStr = c / 16 + '0';
if(*dstStr > '9')
*dstStr = *dstStr - '0' - 10 + 'A';
++dstStr;
*dstStr = c % 16 + '0';
if(*dstStr > '9')
*dstStr = *dstStr - '0' - 10 + 'A';
++dstStr;
}
*dstStr = 0;
}
 
int GBK2Utf8(char* gbk, char* utf8)  
{
wchar_t uni[BUFFER_SIZE];
MultiByteToWideChar(CP_ACP, 0, gbk, -1, uni, BUFFER_SIZE);
    return WideCharToMultiByte(CP_UTF8, 0, uni, -1, utf8, BUFFER_SIZE, NULL, NULL);  
}
 
void play(LPSTR filename)
{
char buffer[1024];
sprintf(buffer, "open \"%s\" alias googlesnd", filename);
mciSendStringA(buffer, NULL, 0, NULL);
mciSendStringA("play googlesnd", NULL, 0, NULL);
}
 
int main()
{
char hexStr[BUFFER_SIZE], buffer[BUFFER_SIZE];
char filename[MAX_PATH];
 
puts("请输入一句话(中文哦),本程序将把你写在下面的话使用谷歌娘读出并保存为mp3文件哦!");
gets(hexStr);
memset(filename, 0, MAX_PATH);
strncpy(filename, hexStr, 10);
strcat(filename, ".mp3");
char2Hex(buffer, hexStr, GBK2Utf8(hexStr, buffer));
sprintf(buffer, GOOGLE_URL, hexStr);
if(!getGoogleMp3FileByURL(buffer, filename, g_cache))
puts("网络发生错误,无法读取。请确定你的机器可以联网!");
else
{
puts("正在播放声音...");
Sleep(100); // 别急,稍等一下。
play(filename);
puts("播放成功, 按任意键结束.");
fflush(stdin);
getchar();
}
mciSendStringA("close all", NULL, 0, NULL);
return 0;
}

嗯,代码今天无聊写的,本来想弄个实时读出博文的,但对js的操作不熟,做起来麻烦。

大概就这样吧。希望对你有所帮助。

如果你不会编程,那么这里提供源代码和可执行文件的下载,请点击:

https://wysaid.googlecode.com/files/Get%20Google%20Speaker%20Voice.zip

友情提示,如果一段话过长,请分成多次保存,然后自己使用工具合并。

blog.wysaid.org/BK_MUSIC/blog435.mp3

3 thoughts on “调戏谷歌娘的正确方法(附代码)”

  1. senge说道:
    2013 年 5 月 19 日 上午 9:44

    裤子都脱了你就让我听这个?

    1. 呆毛酱说道:
      2013 年 5 月 19 日 上午 9:44

      ……

  2. 呆毛酱说道:
    2013 年 5 月 18 日 下午 7:35

    消灭零回复

Comments are closed.


转载本Blog文章请注明出处:
wysaid.org

2023年 3月
日 一 二 三 四 五 六
 1234
567891011
12131415161718
19202122232425
262728293031  
« 7月    

评论

  • luo.la发表在《使用OpenAL打开麦克风录音并实时回放(类似K歌效果)》
  • 罗拉发表在《使用OpenAL打开麦克风录音并实时回放(类似K歌效果)》
  • 大喜发表在《使用OpenAL打开麦克风录音并实时回放(类似K歌效果)》
  • 罗拉套图网发表在《使用OpenAL打开麦克风录音并实时回放(类似K歌效果)》
  • 爱就爱啦发表在《使用OpenAL打开麦克风录音并实时回放(类似K歌效果)》

归档

分类

TAG

Android c C++ domain EGE host iOS JavaScript NDK OpenAL OpenGL Slideshow WebGL教程 WGE 人脸识别 分形 动漫 在线演示 小程序 常识 数学 游戏 源代码 滤镜 算法 表白 视频 评论 谷歌娘 钢琴 音乐
© 2023 大师兄的博客 | Powered by Superbs Personal Blog theme