소프트웨어 텍스트를 음성으로 읽기 VBScript
2020.03.11 01:14
안녕하세요? 설치/사용기에 모자님 글을 보고 생각나서 팁으로 올려 봅니다.
모자님글 링크 ; https://windowsforum.kr/review/13011034 , https://windowsforum.kr/review/12992929
텍스트를 읽어 주는 간단한 스크립트 입니다. 재미 있을 것 같아서 검색하여 짜깁기 하였습니다.
두가지 방식으로 사용할 수 있습니다. 먼저 텍스트 복사후 실행하거나 텍스트 파일을 읽게 하는 것입니다.
1. 설치(?)
- 첨부 파일(Text To Speech.vbs)을 c:\Users\(사용자)\AppData\Roaming\Microsoft\Windows\SendTo\ 에 저장합니다.
- Text To Speech.vbs 파일을 바탕화면에 바로가기를 만들고 바로가기 속성에서 단축키를 Ctrl+Alt+S 로 설정합니다.
- (토탈커맨드 사용자는 "도구바"나 "시작"메뉴에 등록시 매개변수에 %P%N 입력, 단축키 설정하실 수 있습니다.)
2. 텍스트 파일 음성 읽기
- 텍스트 파일을 우클릭하여 "보내기" -> "Text To Speech" 순으로 하시면 먼저 들려줄 텍스트를 보여주고 "예" 선택시 읽어줍니다.
- 너무 긴 텍스트는 다 보여 주지는 못하지만 끝까지 읽습니다. 중간에 멈출수 없으므로 너무 길면 아래 방법을 이용해 보십시오.
3. 클립보드의 텍스트 음성 읽기
- 먼저 읽을 텍스트를 클립보드로 복사합니다.(Ctrl+C)
- 1번에서 설정한 단축키 Ctrl+Alt+S 를 입력하면 읽을 텍스트를 보여주고 "예"를 선택하면 읽어줍니다.
단순한 팁인데 눈이 피곤할때 눈감고 듣고 있으면 괜찮을 것 같습니다.
4. 엑셀에서 선택한 셀들을 읽어주는 파일 예제 입니다. 셀 읽어주기.xlsm
- 매크로 포함으로 열어서 Ctrl+M을 누르면 다수의 선택된 셀을 순차적으로 읽어 갑니다.
PS. 카리스마조님 꼭 돌아오시기 바랍니다.^.^ <- 좌측 문장을 복사후 Ctrl+Alt+S 해보실까요~.
댓글 [25]
-
또비 2020.03.11 07:57 -
cungice 2020.03.11 09:11
수고 많으셨습니다. 감사합니다.
-
또비 2020.03.11 09:59 이건 테스크바에 고정 해 놓으면 아이콘변경은 안되나요?
-
지후빠 2020.03.11 10:06
https://windowsforum.kr/lecture/12956528 글을 참고하시면 가능합니다.^^
-
또비 2020.03.11 10:13 테스크바 에 있는 아이콘 변경은 안되는데요? vbs 파일이라서 그런가요?
-
지후빠 2020.03.11 10:44
아이콘 변경후 재부팅해야 합니다. ^^
-
또비 2020.03.11 10:00 읽는걸 mp3 로 저장할수는 없나요?
-
지후빠 2020.03.11 10:08
1.녹음 프로그램은 종류가 많습니다. 곰녹음기 등을 이용하시면 될것 같습니다.
- 참고 링크; http://jaewook.net/archives/8966 자주 사용하는 기능이 아니면 이 방법이 추천되구요.
2.vbs 자체로는 힘들고 자체 변환 능력이 있는 프로그램(TextAloud 등)을 이용할 수 있습니다.
- 자주 사용하는 경우는 이런 전용 프로그램이 더 유리합니다.
3.자료실 https://windowsforum.kr/data/11902523 도 괜찮아보입니다.
-
또비 2020.03.11 10:13 vbs 로 바로 저장하는 방법은 없나 보네요.;;
-
Star★Bros 2020.03.11 10:46
https://windowsforum.kr/data/7017197
제가 전에 비슷한걸 만들어서 올렸던 적이 있는데요.보이스타x64.exe
실행하신후 같은경로에 놓고 시.txt 입력하고 엔터쳐보세요. -
빨강모자 2020.03.11 10:49 문의 드림니다.
파일선택창을 띄워 .txt 파일을 선택하면 읽어주게는 안되는지요?
지식이 미천하여 구현하지 못하는 1인 입니다....
관심있고 구현가능하시면 부탁드림니다..
모자의 글중 댓글부문을 보면 일일이 적용하시는듯한데
이를 선택창을 띄우고 파일을 선택하면 읽어주는 ......... 흠..... 뭐 이런 로직이면 좀 더 많은 활용이 될듯하여 청해 봅니다.
수고하심에 감사의 마음을 올림니다.
-
지후빠 2020.03.11 12:52
VBScript는 win api를 직접 call 할 수 없도록 되어있어서 순수 vbscript로는 힘들고 외부 ocx 등을 이용하면 가능해지지만 외부 dll 등을 설치해야 하는 문제가 있습니다. 또한 vba를 지원하는 프로그램들이 설치되어 있으면 해당 프로그램 인터페이스를 빌려서 파일 열기 창을 띄어 볼수 있겠으나 또한 해당 프로그램이 설치되어 있어야 하는 문제가 있습니다. 흔히 ms office는 설치되어 있을것 같아 그것을 이용해 볼수는 있을것 같습니다.
좀 더 찾아보고 좋은 아이디어 있으면 추가해 보겠습니다. ^^ IE 쪽 인터페이스를 이용할 수 있는 것 같습니다.
아래 링크에서 찾은 것 같습니다. 추가 버전 만들어 보겠습니다.
-
빨강모자 2020.03.11 13:34 말씀이라도 고맙습니다.
여건이 된다면 함께 자리해 볼께요~~~ 꾸벅~~
-
지후빠 2020.03.11 16:46
-
빨강모자 2020.03.11 17:04 감사합니다... 매우 흡족합니다.
수고해 주시어 너무나도 고마운 마음을 전해올림니다...꾸벅~~
-
지후빠 2020.03.11 17:42
하나 더 배우게 되어서 감사드리고 즐겁습니다. ^&^
-
arim 2020.03.11 18:15
By R.H님 글을 읽고 텍스트를 읽어주는 cmd 파일을 만들었습니다.
할 줄 아는게 어설픈 cmd 뿐이라서 어설프지만 올려 봅니다.
배치파일이 있는 폴더에 *.txt 파일을 1개만 넣고 실행하면,,,
@echo off
color 1f
cd /d %~dp0
for /f "delims=" %%a in ('dir *.txt /o:n /b') do (set text="%%a" & goto _rename)
exit
:_rename
rename %text% test.txtif exist Voice.vbs del /f /q /a Voice.vbs
setlocal enabledelayedexpansion
for /f "delims=" %%b in (test.txt) do (
set "line=%%b"
set "line=!line:"='!"
call :end !line!
)
rename test.txt %text%
exit:end
echo Option Explicit > Voice.vbs
echo Dim David >> Voice.vbs
echo. >> Voice.vbs
echo 'arim's Voice Message >> Voice.vbs
echo Set David = CreateObject("SAPI.spVoice") >> Voice.vbs
echo Set David.Voice = David.GetVoices.Item(0) >> Voice.vbs
echo David.Rate = 2 >> Voice.vbs
echo David.Volume = 100 >> Voice.vbs
echo. >> Voice.vbs
echo. >> Voice.vbs
echo David.Speak " %* " >> Voice.vbscscript Voice.vbs
del /f /q /a Voice.vbs
exit /b
감사합니다.
다 읽기 전에 cmd 파일을 끝내면 ?.txt 파일 이름이 test.txt로 바뀝니다.
원본 보관 하세요.
-
지후빠 2020.03.11 22:20
항상 for 문만 들어가면 머리가 어지럽네요 ^^; 수고하셨습니다.
-
컨피그 2020.03.12 01:47
배치파일 구문중에 아래부분 해석좀 부탁드립니다
특히 set "line=!line:"='!" 이부분이 어렵네요..
for /f "delims=" %%b in (test.txt) do (
set "line=%%b"
set "line=!line:"='!"
call :end !line!
) -
arim 2020.03.12 02:53
for /f "delims=" %%b in (test.txt) do ( 파일 이름이 한글이면 안 될 수가 있어서 영어로
set "line=%%b" 텍스트에서 한 줄을 line 함수에 저장
set "line=!line:"='!" 문장에 "가 있으면 vbs 스크립트에서 에러 발생하니까 "을 '으로 바꿔라
for 문 내부에서는 %line%는 인식이 안되어 setlocal enabledelayedexpansion 선언 후 !line!를 사용
call :end !line! :end 문 이후로 가서 exit /b를 만나면 돌아 오라
) 대충 이렇습니다. cmd 명령창에 for /? 엔터 하면 사용법이 나옵니다.정년 퇴직후 어깨 너머로 배운거라 잘 알지는 못하고 요즘은 눈이 침침하고 정신 줄도 한번씩 왓다갓다 하네요.
-
컨피그 2020.03.12 18:49
감사합니다~ 다른부분은 대충 이해를 하겠는데요
line=!line:"='!
이렇게 변수를 가공하는 부분에 대한 강좌나 설명 나와있는곳이 있나요?
어떻게 검색해야 찾을 수 있을까요?
-
arim 2020.03.12 19:32
C:\Users>set /?
cmd.exe 환경 변수를 보여주거나 설정하거나 지웁니다.SET [변수=[문자열]]
변수 환경 변수 이름을 지정합니다.
문자열 변수에 할당할 문자열을 지정합니다.매개 변수 없이 'SET'이라고 입력하면, 현재 환경 변수를 볼 수 있습니다.
명령 확장을 사용하면 SET는 아래와 같이 바뀝니다.
SET 명령은 변수 이름만으로 호출되며, = 기호나 값으로
그 변수의 값을 표시하지는 않습니다. 예를 들어,SET P
는 문자 'P'로 시작되는 모든 변수를 표시합니다.
SET 명령은 변수 이름을 현재 환경에서 찾을 수 없으면
ERRORLEVEL을 1로 설정합니다.SET 명령에서는 환경 변수 이름에 = 기호를 사용할 수 없습니다.
SET 명령에는 아래와 같이 새로운 두 개의 스위치가 추가됩니다.
SET /A 표현식
SET /P 변수=[promptString]/A 스위치는 = 기호의 오른쪽에 있는 문자열이
수식임을 지정합니다. 이는 계산되어 문자열로 변환되거나
지정한 변수의 새 값으로 만들어진 결과입니다.
표현식 평가기는 매우 간단하며 아래 연산을 지원합니다.() - 그룹 짓기
! ~ - - 단일 연산자
* / % - 산술 연산자
+ - - 산술 연산자
<< >> - 논리 이동
& - 비트단위 and
^ - 비트단위 상호 배제 or
| - 비트단위 or
= *= /= %= += -= - 할당
&= ^= |= <<= >>=
, - 식 구분 기호논리 연산자를 사용하면 표현식 문자열을 인용 부호로 묶어야
합니다. 표현식에서 숫자가 아닌 문자열은 환경 변수 문자열로
취급하며, 그 값은 사용하기 전에 숫자로 변환됩니다. 환경 변수 이름이
지정되었지만 현재 환경에서 정의되지 않았으면 0 값이 사용됩니다.
이렇게 하면 환경 변수 값을 가져오기 위해 % 기호를
모두 입력할 필요 없이 환경 변수 값으로 산술 연산을 수행할 수
있습니다. 명령 스크립트 밖의 명령줄에서 SET /A를 실행하면,
표현식의 마지막 값이 표시됩니다. 할당 연산자의 왼쪽에
환경 변수 이름이 있어야 합니다. 숫자 값은 아무 접두어가 없으면
십진수이며, 접두어 0x는 16진수, 0은 8진수를
나타냅니다. 그러므로 0x12, 18은 022와 같습니다.
8진수는 혼동될 수 있다는 것에 주의하십시오: 08과 09는
8, 9가 올바른 8진수가 아니므로 잘못된 수 입니다./P 스위치는 변수의 값을 사용자가 입력한 입력 줄에 설정하도록
허용합니다. 입력 줄을 읽기 전에 지정한 promptString을 표시합니다.
PromptString을 비워 둘 수 있습니다.환경 변수 대체를 다음과 같이 확장했습니다:
%PATH:str1=str2%
은(는) "str2" 문자열을 가진 확장된 결과에 나타나는 각 "str1" 문자열을
대체하는 PATH 환경 변수를 확장합니다. 확장된 출력에 나타나는 모든
"str1" 문자열을 효과적으로 삭제하기 위해 "str2" 문자열을 비어둘 수
있습니다. "str1" 문자열이 별표(*)로 시작할 수 있습니다. 이 경우에는
확장된 출력의 시작 부분에서부터 str1의 나머지 부분의 첫 문자열까지의
모든 문자열을 일치시킵니다.또한 확장용 하위 문자열을 지정할 수 있습니다.
%PATH:~10,5%
은(는) PATH 환경 변수를 확장한 다음 확장된 결과의 11(10 오프세트)번째
문자에서 시작한 5 문자만 사용합니다. 길이를 지정하지 않으면 기본값을
변수 값의 나머지로 지정합니다. 두(오프세트 또는 길이) 수 모두 음수이면,
사용한 수는 오프세트 또는 지정한 길이에 추가된 환경 변수 값의
길이입니다.%PATH:~-10%
은(는) PATH 변수의 마지막 10 문자를 추출합니다.
%PATH:~0,-2%
은(는) PATH 변수의 2 문자만 제외한 모든 문자를 추출합니다.
지연된 환경 변수 확장명에 대한 지원이 추가되었습니다. 이 지원은 항상
기본적으로 사용할 수 없지만 /V 명령줄을 CMD.EXD로 전환하여 사용할 수 있거나
사용할 수 없게 될 수 있습니다. CMD /?를 참조하십시오.지연된 환경 변수 확장명은 텍스트의 줄을 실행할 때가 아니라
읽을 때 발생한 현재 확장명의 한계를
극복하는데 유용합니다. 다음 예제는
직접 변수 확장명에 나타나는 문제를 보여줍니다:set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)양쪽 IF 설명에 있는 %VAR%가
첫 번째 IF 설명을 읽을 때 대체되고
논리적으로 복합문인 IF의 본문을 포함하기 때문에 메시지를
표시하지 않습니다. 그래서 복합문에 있는 IF가 결코 같을 수 없는
"before"과 "after"를 비교하고 있습니다. 유사하게, 다음 예제는
예상한 것처럼 작업하지 않습니다:set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%현재 디렉터리에 파일 목록을 만들지 않지만,
대신 LIST 변수를 최근에 찾은 파일에 설정합니다.
다신 한번, 이것은 %LIST% 변수가 FOR 설명을 읽을 때
한번 확장되었고 그때 LIST 변수가 비었기 때문입니다.
실행하고 있는 실제 FOR loop는:for %i in (*) do set LIST= %i
이것은 LIST를 최근에 찾은 파일에 설정합니다.
지연된 환경 변수 확장명은 실행 시간에 환경 변수를
확장하도록 다른 문자(느낌표)를 사용하도록
허용합니다. 지연된 변수 확장명을 사용할 수 있으면,
위의 예제가 의도된 대로 다음과 같이 작업하도록 쓰여질 수 있습니다:set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo 이렇게 되면
)set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%명령 확장을 사용하면 확장될 수 있으나 SET에 의해
표시되는 변수 목록에 나타나지 않는 몇몇의
동적 환경 변수가 있습니다. 이 변수 값은
변수 값이 확장될 때마다 동적으로 계산됩니다.
사용자가 변수를 이 이름 중 하나로 분명하게 정의하면
이 정의가 아래에 설명된 동적 변수를 무시합니다:%CD% - 현재 디렉터리 문자열로 확장합니다.
%DATE% - DATE 명령과 같은 포맷을 사용하여 현재 날짜로 확장합니다.
%TIME% - TIME 명령과 같은 포맷을 사용하여 현재 시간으로 확장합니다.
%RANDOM% - 0과 32767 사이에 있는 임의 숫자로 확장합니다.
%ERRORLEVEL% - 현재 ERRPRLEVEL 값으로 확장합니다
%CMDEXTVERSION% - 현재 명령 프로세서 확장자 버전 번호로
확장합니다.%CMDCMDLINE% - 명령 프로세서를 호출하는 원본 명령줄로
확장합니다.%HIGHESTNUMANODENUMBER% - 이 컴퓨터의 최고 NUMA 노드 수로
확장합니다.C:\Users>
환경 변수 대체를 다음과 같이 확장했습니다:
%PATH:str1=str2%
이 부분을 참고 했습니다.
-
컨피그 2020.03.12 20:45
감사합니다~ 코딩스타일을 보니 개발자 출신이신듯 싶네요 ^^
배치스크립트가 알면 알수록 유명한 언어 만큼 고급적인 부분까지 커버를 하는거 같더라고요
커맨드창만 있으면되니 접근성도 쉽고 무거운 에디터가 필요한것도 아니고
다른사람이 짠거 보면서 하나씩 배우는거 같습니다~
-
지후빠 2020.03.12 21:44
힉! 겁나네요. 정신줄 잡고 읽어 볼께요. ^^
-
ttopi 2020.03.11 19:12 음 좋네요. 감사합니다.^^
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
3604 | 윈 도 우| Windows 10 제품 키를 찾는 방법 [11] | VenusGirl | 11230 | 10 | 03-12 |
» | 소프트웨어| 텍스트를 음성으로 읽기 VBScript [25] | 지후빠 | 1705 | 10 | 03-11 |
3602 | 윈 도 우| 카조님의 PrincePE_V36 버전을 USB에 마무리 하는 방법입... [36] | 하늘은높고 | 3934 | 36 | 03-10 |
3601 | 윈 도 우| 카리스마조님 마지막 PrincePE USB만들기 입니다. [27] | 하늘은높고 | 3467 | 33 | 03-10 |
3600 | 윈 도 우| Win10XPE 시스템 속성 컴퓨터 이름 [12] |
|
2518 | 16 | 03-07 |
3599 | 윈 도 우| PrincePE_V22 [53] |
|
6707 | 59 | 03-06 |
3598 | 윈 도 우| 카리스마조님 PrincePE V21 실행 방법입니다. [19] | 하늘은높고 | 2761 | 19 | 03-06 |
3597 | 윈 도 우| PrincePE_V21 [30] |
|
2500 | 45 | 03-06 |
3596 | 윈 도 우| 카리스마조님 PE Win10XPE34 의 내용설명 비교 [7] | 하늘은높고 | 2324 | 12 | 03-05 |
3595 | 윈 도 우| PrincePE_V20 [52] |
|
2886 | 72 | 03-05 |
3594 | 윈 도 우| 카조님 PE에 파일 넣는 방법입니다. [12] | 하늘은높고 | 2063 | 10 | 03-04 |
3593 | 윈 도 우| 작업표시줄 + 바탕화면 ON/OFF ( CTRL+SHIFT+Z ) [20] |
|
1646 | 4 | 03-04 |
3592 | 윈 도 우| 카리스마조님 Win10XPE34 를 USB에 구워넣기 [11] | 하늘은높고 | 2047 | 5 | 03-04 |
3591 | 윈 도 우| vbs_Merge Lines(Drag-n-drop) [12] |
|
571 | 4 | 03-03 |
3590 | 기 타| 구글에 올라가 있는 내사진 지우는 방법 [1] | 하늘은높고 | 2141 | 4 | 03-03 |
3589 | 모 바 일| 유투브에 내가 올린 동영상 삭제 방법 | 하늘은높고 | 990 | 4 | 03-02 |
3588 | 기 타| PE DPI 조절 스크립트 V1.06ALL [5] | 히이이잌 | 1301 | 14 | 03-02 |
3587 | 윈 도 우| nircmd 활용 2개 [1] |
|
680 | 3 | 03-02 |
3586 | 윈 도 우| 파일/폴더 작업 표시줄에 고정 Pin to Taskbar [17] | 지후빠 | 1425 | 6 | 03-02 |
3585 | 소프트웨어| NirCmd v2.86 명령들 |
|
1211 | 5 | 02-29 |
굿 좋네요.