메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

XML, PHP 및 Festival로 60초 라디오 연극 제작

컴퓨터로 생성된 음성을 사용하여 미니멀리스트 오디오 아트 작성

Colin Beckingham, Researcher, 自由职业者
Colin Beckingham is a freelance researcher, writer, and programmer who lives in eastern Ontario, Canada. Holding degrees from Queen's University, Kingston, and the University of Windsor, he has worked in a rich variety of fields, including banking, horticulture, horse racing, teaching, civil service, retail, and travel/tourism. The author of database applications and numerous newspaper, magazine, and online articles, his research interests include open source programming and voice-control applications on Linux. You can reach Colin at colbec@start.ca.

요약:  XML, PHP 및 Festival을 사용하여 60초 극장 음향 연극을 제작 및 녹음하고, 지문을 제공하고, 음향 효과를 삽입하며 동적으로 할당된 Festival 음성의 출연자를 통해 대화 흐름을 통제합니다.

원문 게재일:  2010 년 6 월 15 일 번역 게재일:   2010 년 7 월 27 일
난이도:  중급 영어로:  보기 PDF:  A4 and Letter (44KB | 11 pages)Get Adobe® Reader®
페이지뷰:  3244 회
의견:  


60초 연극이란?

이야기를 전달하기 위해 60초(대략)가 있다. 기본 상황을 설정하고 갈등을 도입하며 그 그림을 매우 빠르게 작성하며 마지막으로 모든 결말이 깔끔하게 정리되는 어떠한 방식으로 갈등을 해결한다. 효과를 위해 녹음된 음향을 사용할 수 있으며, 이 경우에 필자는 문자 음성 변환(TTS) 엔진인 Festival로 합성된 음성을 사용할 것이다. 표현되는 말은 낮고 감정이 없으며 —때로는— 이해하기 어려울 것이다. 왜냐하면 음성이 완벽하지 않기 때문이다.

전체 샘플 연극을 오디오 .ogg 파일로 다운로드한 다음에 계속 읽으면서 연극이 어떻게 생성되었는지 알아보자. Shakespeare는 문예시인으로서 그의 높은 지위 잃어버리는 것에 전혀 관심이 없었지만, 이 컨텍스트에서는 연극 자체가 중요한 것이 아니라 어떻게 프로그래밍될 수 있는지가 중요하다. 필자는 이 연극을 완전히 오픈소스 및 무료 소프트웨어로 생성했으며 Festival TTS에서 제공되는 특징적인 음성이 있는 이 엔진을 사용한다.


연극 재생하기

연극을 두 가지 파일인 연극 자체가 들어 있는 XML 데이터 파일과 PHP에서 제작자 스크립트로 재생한다. XML 데이터에는 출연자 목록, 제목 및 크레딧, 효과를 위해 사용하는 파일의 목록과 각 역할의 대사(대화)가 들어 있다. 제작자는 XML 데이터에서 지시사항에 따라 연극을 오디오 장치로 표현한다. 이렇게 하면 다른 연극을 작성하거나 현재 연극을 편집하고 동일한 제작자로 재생하기 쉽게 된다.


연극의 기본 구조

연극은 여러 개의 막이 있고 각 막은 장면으로 나뉘며, 각 장면은 잡음, 음악, 대화 및 연설 등과 같은 이벤트의 연속이다. 라이브 연극에서는 각 막의 시작에서 커텐이 올라가고 끝에는 내려가는 것을 볼 수 있다. 이를 통해 무대 담당자는 연극의 다음 무대의 배경을 변경할 수 있다. 막은 연극을 여러 개의 섹션으로 나누는 데 유용하며, 때로는 시간이 흐르는 것과 다른 위치로 이동하는 것을 표시한다.

음성 연극에서는 커텐이 올라갈 때의 극적인 시각적 효과가 없다. 극적인 효과는 음향이나 사람이 말하는 것에서부터 나와야 한다.

들을 수 있는 표식을 제공하기 위해 커텐이 올라가는 것과 내려가는 것을 표시하는 음향을 넣을 수 있다. 또한 연극의 제목과 극작가를 발표할 수 있다. 각 막의 시작에 한 사람이 "1막. 광장의 계단에서."라고 외칠 수도 있다. 연극의 끝에는 그 사람이 크레딧을 올리고 관객에게 필요하다고 생각하는 설명을 제공할 수도 있다 ("실제 Joe Blow는 감옥에서 70년을 살았다. . . "). 때로는 연극 도중에도 해설이 필요하다. 철썩 때리는 소리가 들리고 이 소리가 들리는 거리에 두 명의 연기자만 있으면 누가 누구를 때렸는지 아는 것이 도움이 된다.


극적인 등장 인물: 출연자 목록

출연자는 방대해서는 안 된다. 그렇게 되면 각 역할이 1분 정도 내에 할 말이 거의 없을 것이다. Festival은 9가지의 다른 음성 기본 세트를 제공한다. —남자, 여자, 노인, 젊은이이다.—그러면 출연자를 9명으로 제한하자. 가령 연극에 Fred라는 역할이 있고, Fred는 Festival 음성인 voice_don_diphone로 나타내려고 한다(Festival 음성에 대한 자세한 정보는 참고자료를 참조한다). Fred를 다음과 같이 선언할 수 있다.

<role voice="voice_rab_diphone">Fred</role>

여기에서 역할은 Fred이고 음성은 XML 요소 role로의 속성이다. 연극에서 Fred를 언급할 때마다 제작자는 Fred의 대사를 말하는 데 사용하는 음성이 무엇인지 파악한다. Fred에 대해 다른 음성을 사용하도록 결정하면 한 곳에서 속성을 변경하기만 하면 된다.


내레이터 지정하기

내레이터는 특별하고 중요한 역할이다. 이 음성은 연극과 극작가의 이름을 발표하고 해설을 삽입하고 종료 크레딧을 나열한다. 다시 말해 이 음성이 연극의 많은 부분을 함께 엮는다. 출연자 목록에서 내레이터를 다음과 같이 선언할 수 있다.

<role voice="voice_don_diphone">Narrator</role>

이제 내레이터가 무엇인가를 말할 때 마다 제작자는 Fred 외의 음성을 사용한다.


음향 효과와 대화 이벤트

연극은 이벤트의 연속이다. 각 이벤트가 제시되면서 컨텍스트는 더 분명해지거나 더 복잡해진다. 여기에 두 개의 연속된 이벤트의 예가 있다. 음향 효과는 역할이 말하는 대화에 즉시 이어진다.

<event type="effect" player="mplayer">gunshot.wav</event>
<event type="dialogue" player="Bozo">Freeze, turkey</event>

첫 번째 이벤트는 effect 속성이 있어서, 이는 음향이고 TTS 엔진으로 표현되지 않음을 표시한다. 두 번째 속성은 Mplayer로 음향을 재생하라는 뜻이며, 이는 gunshot.wav 파일이다.

두 번째 이벤트는 Bozo 역할이 "Freeze, turkey"라고 말하는 대화이다. 이 컨텍스트에서는 하나의 TTS 엔진만 있기 때문에 어떤 엔진을 사용할 것을 지정하는 속성이 없다. 제작자는 항상 동일한 것만 사용한다.

이 구조에서 XML 요소로서의 이벤트는 장면 내에서만 발생한다. 그러나 내레이터의 시작 발표, 종료 크레딧과 박수와 같이 여전히 막과 장면 구조의 외부에서 음향과 표현되는 말이 있을 수 있다.


막과 장면

연극이 많은 수의 막으로 되어 있고 각 막이 장면으로 나누어지기 때문에 기본 흐름 구조는 Listing 1과 같이 될 것이다.


Listing 1. 막, 장면 및 연관된 이벤트

<act>
  <curtainUp>KDE_Window_Shade_Up.ogg</curtainUp>
  <scene>
    <event type="dialogue" player="five">...</event>
    <event type="dialogue" player="nine">...</event>
  </scene>
  <scene>
    <event type="dialogue" player="five">...</event>
    <event type="dialogue" player="two">...</event>
  </scene>
  <curtainDown>KDE_Window_Shade_Down.ogg</curtainDown>
</act>

여기에 두 개의 장면이 있는 막이 하나만 있고, 각 장면은 five, nine 및 two의 역할이 연관된 두 개의 대사 행이 있다. —각 역할은 위에서 설명한 대로 출연자 목록에서 정의한 고유의 음성이 있다. 또한 막의 시작과 종료 시에 재생되는 파일을 사용하여 커텐이 올라가고 내려가는 음향에 대한 지시사항이 있다. 이 예제에서는 K Desktop Environment(KDE)로부터 일부 시스템 음향을 차용했다.


동적으로 음성 할당하기

역할이 확성기나 헤드폰을 통해 무엇인가를 말하도록 하는 것은 제작자의 일이다. 제작자 PHP 코드에 Listing 2에 표시된 함수가 들어있다.


Listing 2. 음성을 동적으로 호출하기

function deliver($phrase,$voice) {
  exec('festival -b \'(begin ('.$voice.') 
         (SayText "'.$phrase.'"))\' >/dev/null',$out);
}

이 함수에서 논쟁은 구절(무엇을 말하는가)과 음성(어떤 Festival 음성을 사용하여 표현하는가)이다. exec 함수는 Festival에서 일괄처리 모드로 두 가지의 작업인 음성 설정 및 지정된 음성을 사용하여 구절 발음하기를 수행하기 위해 호출한다. begin 지시사항은 Festival에 여러 가지 작업을 수행해야 함을 표시한다.


완성된 연극

Listing 3에 XML로 가능하고 완성된 간단한 연극 데이터 파일이 표시된다.


Listing 3. XML에서 완성된 연극 데이터

<?xml version="1.0" encoding='UTF-8'?>
<play>
  <dramatisp>
    <role voice="voice_don_diphone">muchi</role>
    <role voice="voice_kal_diphone">dad</role>
    <role voice="voice_rab_diphone">narra</role>
    <role voice="voice_nitech_us_awb_arctic_hts">mscot</role>
    <role voice="voice_nitech_us_bdl_arctic_hts">spare</role>
    <role voice="voice_nitech_us_clb_arctic_hts">matron</role>
    <role voice="voice_nitech_us_jmk_arctic_hts">fuzzy</role>
    <role voice="voice_nitech_us_rms_arctic_hts">uncle</role>
    <role voice="voice_nitech_us_slt_arctic_hts">filly</role>
  </dramatisp>
  <intro>
    <music>chimes.ogg</music>
    <theatre>Sixty second theatre with XML and Festival</theatre>
    <title>Todays play - The demonstration effect</title>
  </intro>
  <act>
    <curtainUp>KDE_Window_Shade_Up.ogg</curtainUp>
    <scene>
      <!-- event type="effect" player="mplayer">tmp.wav</event -->
      <event type="dialogue" player="dad">The doctor is taking a long time</event>
      <event type="dialogue" player="matron">Yes but it is worth the wait</event>
      <event type="dialogue" player="dad">Looks like you broke your arm</event>
      <event type="dialogue" player="dad">Did you have a bad fall</event>
      <event type="dialogue" player="matron">Yes one of those silly falls</event>
      <event type="dialogue" player="matron">Icy steps</event>
      <event type="dialogue" player="dad">Could happen to anybody</event>
    </scene>
    <curtainDown>KDE_Window_Shade_Down.ogg</curtainDown>
  </act>
  <act>
    <curtainUp>KDE_Window_Shade_Up.ogg</curtainUp>
    <scene>
      <!-- event type="effect" player="mplayer">tmp.wav</event -->
      <event type="dialogue" player="dad">It is really cold out there</event>
      <event type="dialogue" player="uncle">Yes the cold gives me chill blains</event>
      <event type="dialogue" player="dad">Hands or feet</event>
      <event type="dialogue" player="uncle">Both</event>
      <event type="dialogue" player="dad">That is bad luck</event>
    </scene>
    <curtainDown>KDE_Window_Shade_Down.ogg</curtainDown>
  </act>
  <act>
    <curtainUp>KDE_Window_Shade_Up.ogg</curtainUp>
    <scene>
      <!--event type="effect" player="mplayer">tmp.wav</event -->
      <event type="dialogue" player="dad">Thats a bad cough</event>
      <event type="dialogue" player="filly">Yes it hurts when I breathe</event>
      <event type="dialogue" player="dad">I am sorry to hear that</event>
      <event type="dialogue" player="filly">What is your ailment</event>
      <event type="dialogue" player="dad">Oh I am not actually sick</event>
      <event type="dialogue" player="dad">But I do not feel well unless I surround
            myself with people who are a lot worse off</event>
    </scene>
    <curtainDown>KDE_Window_Shade_Down.ogg</curtainDown>
  </act>
  <end>
    <musicEnd></musicEnd>
    <credits>Thanks to Festival, PHP, Audacity and XML</credits>
  </end>
  <Applause></Applause>
</play>

이 XML 데이터 파일에서 루트 요소는 <play>이다. 데이터 파일 중간에 막과 장면이 추가되고 연극은 <dramatisp> 요소에서 역할과 음성의 선언으로 시작되고, 내레이터 또는 발표자가 연극의 제목을 제시하는 도입 섹션과 음악, 크레딧과 박수(예상)가 있는 종료 섹션이 있다.


제작자

몇 가지 사소한 포인트를 제외하고 이제 연극을 재생하기 위한 모든 부분이 한 곳에 모였다. 제작자 스크립트는 도입, 막, 장면과 종료를 계속 반복하여 필요에 따라 Mplayer 또는 Festival을 사용하여 이벤트를 순서대로 재생한다. Listing 4에서는 명령행으로부터 실행되도록 프로그래밍된 전체 제작자 스크립트가 표시되어 있다.


Listing 4. PHP에서 제작자 스크립트

<?php
// sixty second theatre player
echo "60 second theater player\n";
if ($argc < 2) die("No play specified\n");
$playxml = $argv[1];
$xml = simplexml_load_file($playxml);
// load players' voices
$roles = $xml->dramatisp->role;
foreach ($roles as $rolevoice) {
  $rolev["$rolevoice"] = $rolevoice['voice'];
}
$announcer = $rolev["narra"];
$timestart = time();
//
// now the introduction
//
play_effect($xml->intro->music,"mplayer");
deliver((string) $xml->intro->theatre,$announcer);
deliver((string) $xml->intro->title,$announcer);
//
// now the acts
//
$anum = 0;
$snum = 0;
foreach ($xml->act as $A) {
  $anum++;
  deliver("Act $anum",$announcer);
  play_effect($A->curtainUp,"mplayer");
  foreach ($A->scene as $s) {
    $snum++;
    //deliver("Scene $snum",$announcer);
    play_effect("chimes1.ogg","mplayer");
    $events = $s->event;
    foreach ($events as $e) {
      switch ($e['type']) {
            case "effect":
              $engine = $e['player'];
              play_effect($e,$engine);
              break;
            case "dialogue":
              $plyr = $e['player'];
              // echo "Trying $e with $plyr\n";
              deliver($e,$rolev["$plyr"]);
              break;
            default:
              die("Invalid type");
              break;
      }
    }
  }
  play_effect($A->curtainDown,"mplayer");
  $snum = 0;
  }
//
// end of the play
//
deliver($xml->end->credits,$announcer);
$timeend = time();
$length = $timeend - $timestart;
echo("Total length is $length seconds.\n");
//
// functions
//
function play_effect($effect,$engine) {
exec("$engine $effect",$out);
}
function deliver($phrase,$voice) {
  // echo "$phrase with $voice\n";
  exec('festival -b \'(begin ('.$voice.') 
            (SayText "'.$phrase.'"))\' >/dev/null',$out);
}
?>

이 제작자 파일에서 먼저 연극을 메모리로 로드하고(XML 데이터 파일 myplay.xml에 자세히 나온 대로) XML 오브젝트가 되도록 선언한다. 다음에 플레이어의 출연자를 찾고 사용할 음성으로 이를 배열에 로드한다. 그런 다음에 내레이터 또는 발표자에 사용할 음성을 선택하고 시작 시간을 기록하여 연극의 실행을 완료했을 때 연극이 얼마나 오래 걸리는지 측정할 수 있다. 연극 제목이 발표된 후 막을 거쳐 루프로 즉시 시작한다. —연극에 아무리 막이 많이 있다 하더라도 말이다.—그리고 각 막 동안에 장면을 거쳐서 이동하며 포함된 이벤트 지시사항이 이어진다.


첫 번째 리허설

스피커로 연극을 재생하려면 제작자를 시작하고 데이터 파일을 제공한다.

$ php producer.php myplay.xml

또한 제작자가 녹음된 파일로 결과물을 송신하게 하여 연극을 녹음할 수 있다.

$ php producer.php myplay.xml | arecord (options) myplay.wav

그 다음에 이 파일을 Audacity® (링크를 보려면 참고자료 참조)와 같은 오디오 편집기에서 편집하거나 sox와 같은 오디오 유틸리티로 조작할 수 있다.


정리하기

비록 녹음한 것을 들을 수 있지만 이 프로시저에서부터 결과물이 개선될 수 있다. 예를 들면, 다음과 같다.

  • 특정 대화를 페이드인(fade in)하고 페이드아웃(fade out)하는 것이나 대화로 음향을 겹치게 하는 것이 유용할 수 있다. 비록 연극이 진행되는 중에 이 제작자로 직접 이 작업을 완수할 수는 없지만 Audacity와 같은 도구로 이를 사후 제작할 수 있다. 그러나 이러한 방법으로 연극을 개선하면 할수록 미니멀리스트에서 점점 더 멀어지게 된다.
  • 느린 컴퓨터는 오디오 엔진을 시작하거나 중지하는 데 1~2초 정도 걸릴 것이다. 이는 결과물에서 이벤트 사이에 불필요하게 긴 침묵을 남기는 것이다. 이러한 긴 침묵은 사후 편집 과정에서 유용하다. 왜냐하면 이벤트 사이에 휴식이 매우 분명하게 표시되기 때문이다. 하지만 최종 버전에서는 최종 프로덕션의 속도를 개선하기 위해 짧아진다. 이는 Audacity로 Truncate silence 효과를 사용하여 달성할 수 있다. 이러한 비차별적인 침묵 끊기 메소드를 사용하면 삽입해 놓은 모든 영화대본 리듬(의도적인 침묵)이 제거되기 때문에 이러한 리듬은 이 프로세스 이후에 삽입하는 것이 가장 좋다.
  • 광범위한 음성과 원하는 음향 효과가 무엇이든지 사용해라. 하지만 짧은 시간 동안에 너무 복잡하게 만들지는 말자. 구급차 사이렌이나 총 소리와 같이 잘 알려진 개념을 사용하는 것이 유용하다. 왜냐하면 이러한 음향은 많은 컨텍스트를 지니고 있기 때문이다.

결론

물론 XML 접근 방식 대신에 관계형 데이터베이스를 사용하여 연극과 이벤트를 저장할 수 있다. 하지만 이 컨텍스트에서 XML은 플랫 파일 양식으로 되어 있기 때문에 독자나 편집자에게 훨씬 더 명확하다. 만약 말하는 대화 행에 만족하지 않으면 빠른 편집, 제작자 재실행 작업을 할 수 있으며 이는 새로운 최종 작품이 된다.

낮고 감정이 없으며 합성된 음성으로 된 60초 연극은 이 작업을 미니멀리스트 아트 형식으로 만들었다. 훈련되고 경험이 있는 연기자를 내세운 해석이 없이도 관객은 다른 종류의 경험을 한다. 리스너는 마음 속으로 구절 나누기와 리듬과 같이 세부 사항을 추가해야 한다. 그러나 XML과 Festival 또는 다른 TTS 엔진을 사용하면 "청취 가능한" 프로덕션을 제작하는 것이 가능하다.



다운로드 하십시오

설명이름크기다운로드 방식
The 60-second playwell.ogg.zip1000KBHTTP

다운로드 방식에 대한 정보


참고자료

교육

  • Audacity: 오디오 형식 사이의 번역이나 결과물 파일의 다른 편집에 특히 유용한 오디오 편집기에 대해 자세히 배워보자.

  • Festival: 연기자의 음성을 말하는 TTS 엔진에 대해 자세히 배워보자.

  • Festival 음성: Festival에서 사용 가능한 다른 음성에 대해 자세히 배워보고 음성을 다운로드하자.

  • Mplayer: 오디오 플레이어에 대해 알아보자.

  • My developerWorks: developerWorks와 관련된 경험을 개인화할 수 있다.

  • IBM XML 인증: XML 및 관련 기술에 대한 IBM 인증 개발자가 되는 방법을 찾아볼 수 있다.

  • XML Technical library: developerWorks XML 영역에서 다양한 기술 관련 기사와 팁, 튜토리얼, 표준 및 IBM Redbook을 볼 수 있다.

  • developerWorks technical events and webcasts: 이들 세션에 참가하여 최신 기술에 대한 정보를 얻을 수 있다.

  • Twitter의 developerWorks 페이지: 오늘 가입하여 developerWorks 트윗을 팔로우하자.

  • developerWorks podcasts: 소프트웨어 개발자의 흥미로운 인터뷰와 토론을 확인할 수 있다.

제품 및 기술 얻기

  • IBM 제품 평가판을 다운로드하거나 IBM SOA Sandbox의 온라인 시험판을 살펴보고 DB2®, Lotus®, Rational®, Tivoli® 및 WebSphere®의 애플리케이션 개발 도구 및 미들웨어 제품을 사용해 볼 수 있다.

토론

필자소개

Colin Beckingham is a freelance researcher, writer, and programmer who lives in eastern Ontario, Canada. Holding degrees from Queen's University, Kingston, and the University of Windsor, he has worked in a rich variety of fields, including banking, horticulture, horse racing, teaching, civil service, retail, and travel/tourism. The author of database applications and numerous newspaper, magazine, and online articles, his research interests include open source programming and voice-control applications on Linux. You can reach Colin at colbec@start.ca.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=XML, 오픈 소스
ArticleID=502205
ArticleTitle=XML, PHP 및 Festival로 60초 라디오 연극 제작
publish-date=06152010
author1-email=colbec@start.ca
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.