Skip to content

狗子窝

没事就吠一下

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

2025 年 5 月
日 一 二 三 四 五 六
 123
45678910
11121314151617
18192021222324
25262728293031
« 2 月    

评论

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

归档

分类

TAG

Android c C++ domain EGE host iOS JavaScript NDK OpenAL OpenGL Slideshow WebGL教程 WGE 人脸识别 作文 分形 动漫 在线演示 小程序 常识 数学 游戏 源代码 滤镜 算法 老文翻新 表白 视频 评论 谷歌娘 酸腐文章 钢琴 音乐
© 2025 狗子窝 | Powered by Superbs Personal Blog theme